43 {0,
nullptr, 0,
nullptr,
nullptr}};
46 {
SOCK_FLOAT,
"FLOAT", ICON_NODE_SOCKET_FLOAT,
"Float",
""},
47 {
SOCK_INT,
"INT", ICON_NODE_SOCKET_INT,
"Integer",
""},
48 {
SOCK_BOOLEAN,
"BOOLEAN", ICON_NODE_SOCKET_BOOLEAN,
"Boolean",
""},
49 {
SOCK_VECTOR,
"VECTOR", ICON_NODE_SOCKET_VECTOR,
"Vector",
""},
50 {
SOCK_RGBA,
"RGBA", ICON_NODE_SOCKET_RGBA,
"Color",
""},
51 {
SOCK_ROTATION,
"ROTATION", ICON_NODE_SOCKET_ROTATION,
"Rotation",
""},
52 {
SOCK_MATRIX,
"MATRIX", ICON_NODE_SOCKET_MATRIX,
"Matrix",
""},
53 {
SOCK_STRING,
"STRING", ICON_NODE_SOCKET_STRING,
"String",
""},
54 {
SOCK_MENU,
"MENU", ICON_NODE_SOCKET_MENU,
"Menu",
""},
55 {
SOCK_SHADER,
"SHADER", ICON_NODE_SOCKET_SHADER,
"Shader",
""},
56 {
SOCK_OBJECT,
"OBJECT", ICON_NODE_SOCKET_OBJECT,
"Object",
""},
57 {
SOCK_IMAGE,
"IMAGE", ICON_NODE_SOCKET_IMAGE,
"Image",
""},
58 {
SOCK_GEOMETRY,
"GEOMETRY", ICON_NODE_SOCKET_GEOMETRY,
"Geometry",
""},
59 {
SOCK_COLLECTION,
"COLLECTION", ICON_NODE_SOCKET_COLLECTION,
"Collection",
""},
60 {
SOCK_TEXTURE,
"TEXTURE", ICON_NODE_SOCKET_TEXTURE,
"Texture",
""},
61 {
SOCK_MATERIAL,
"MATERIAL", ICON_NODE_SOCKET_MATERIAL,
"Material",
""},
62 {
SOCK_BUNDLE,
"BUNDLE", ICON_NODE_SOCKET_BUNDLE,
"Bundle",
""},
63 {
SOCK_CLOSURE,
"CLOSURE", ICON_NODE_SOCKET_CLOSURE,
"Closure",
""},
64 {0,
nullptr, 0,
nullptr,
nullptr},
72 "Default color tag for new nodes and node groups"},
89 {0,
nullptr, 0,
nullptr,
nullptr},
98 "Transform a texture by inverse mapping the texture coordinate"},
103 "Transform a direction vector (Location is ignored)"},
108 "Transform a unit normal vector (Location is ignored)"},
109 {0,
nullptr, 0,
nullptr,
nullptr},
117 "Rotate a point using axis angle"},
122 {0,
nullptr, 0,
nullptr,
nullptr},
136 {
NODE_MATH_INV_SQRT,
"INVERSE_SQRT", 0,
"Inverse Square Root",
"1 / Square root of A"},
145 {
NODE_MATH_COMPARE,
"COMPARE", 0,
"Compare",
"1 if (A == B) within tolerance C else 0"},
150 "The minimum from A and B with smoothing C"},
155 "The maximum from A and B with smoothing C"},
161 "Round A to the nearest integer. Round upward if the fraction part is 0.5"},
162 {
NODE_MATH_FLOOR,
"FLOOR", 0,
"Floor",
"The largest integer smaller than or equal A"},
163 {
NODE_MATH_CEIL,
"CEIL", 0,
"Ceil",
"The smallest integer greater than or equal A"},
164 {
NODE_MATH_TRUNC,
"TRUNC", 0,
"Truncate",
"The integer part of A, removing fractional digits"},
171 "The remainder of truncated division using fmod(A,B)"},
176 "The remainder of floored division"},
177 {
NODE_MATH_WRAP,
"WRAP", 0,
"Wrap",
"Wrap value to range, wrap(A,B)"},
178 {
NODE_MATH_SNAP,
"SNAP", 0,
"Snap",
"Snap to increment, snap(A,B)"},
183 "Wraps a value and reverses every other cycle (A,B)"},
198 {
NODE_MATH_RADIANS,
"RADIANS", 0,
"To Radians",
"Convert from degrees to radians"},
199 {
NODE_MATH_DEGREES,
"DEGREES", 0,
"To Degrees",
"Convert from radians to degrees"},
200 {0,
nullptr, 0,
nullptr,
nullptr},
216 "Reflect A around the normal B. B does not need to be normalized."},
221 "For a given incident vector A, surface normal B and ratio of indices of refraction, Ior, "
222 "refract returns the refraction vector, R"},
227 "Orients a vector A to point away from a surface B as defined by its normal C. "
228 "Returns (dot(B, C) < 0) ? A : -A"},
250 "Round A to the largest integer multiple of B less than or equal A"},
255 {0,
nullptr, 0,
nullptr,
nullptr},
269 "True when both inputs are equal (exclusive nor)"},
274 "True when both inputs are different (exclusive or)"},
280 "True unless the first input is true and the second is false"},
285 "True when the first input is true and the second is false (not imply)"},
286 {0,
nullptr, 0,
nullptr,
nullptr},
305 "The minimum value from A and B, min(A,B)"},
310 "The maximum value from A and B, max(A,B)"},
317 "Divide and round result toward zero"},
322 "Divide and floor result, the largest integer smaller than or equal A"},
327 "Divide and ceil result, the smallest integer greater than or equal A"},
333 "Modulo that is periodic for both negative and positive operands"},
339 "Greatest Common Divisor",
340 "The largest positive integer that divides into each of the values A and B, "
341 "e.g. GCD(8,12) = 4"},
345 "Least Common Multiple",
346 "The smallest positive integer that is divisible by both A and B, e.g. LCM(6,10) = 30"},
347 {0,
nullptr, 0,
nullptr,
nullptr},
355 "True when the first input is smaller than second input"},
359 "Less Than or Equal",
360 "True when the first input is smaller than the second input or equal"},
365 "True when the first input is greater than the second input"},
369 "Greater Than or Equal",
370 "True when the first input is greater than the second input or equal"},
371 {
NODE_COMPARE_EQUAL,
"EQUAL", 0,
"Equal",
"True when both inputs are approximately equal"},
376 "True when both inputs are not approximately equal"},
381 "True when the first input is brighter"},
383 {0,
nullptr, 0,
nullptr,
nullptr},
391 "Round the float up or down to the nearest integer"},
396 "Round the float down to the next smallest integer"},
401 "Round the float up to the next largest integer"},
406 "Round the float to the closest integer in the direction of zero (floor if positive; ceiling "
408 {0,
nullptr, 0,
nullptr,
nullptr},
416 "Linear interpolation between From Min and From Max values"},
421 "Stepped linear interpolation between From Min and From Max values"},
426 "Smooth Hermite edge interpolation between From Min and From Max values"},
431 "Smoother Hermite edge interpolation between From Min and From Max values"},
432 {0,
nullptr, 0,
nullptr,
nullptr},
436 {
NODE_CLAMP_MINMAX,
"MINMAX", 0,
"Min Max",
"Constrain value between min and max"},
441 "Constrain value between min and max, swapping arguments when min > max"},
442 {0,
nullptr, 0,
nullptr,
nullptr},
446 {1,
"1D", 0,
"1D",
"Use the scalar value W as input"},
447 {2,
"2D", 0,
"2D",
"Use the 2D vector (X, Y) as input. The Z component is ignored."},
448 {3,
"3D", 0,
"3D",
"Use the 3D vector (X, Y, Z) as input"},
449 {4,
"4D", 0,
"4D",
"Use the 4D vector (X, Y, Z, W) as input"},
450 {0,
nullptr, 0,
nullptr,
nullptr},
458 "The handle can be moved anywhere, and does not influence the point's other handle"},
463 "The location is automatically calculated to be smooth"},
468 "The location is calculated to point to the next/previous control point"},
473 "The location is constrained to point in the opposite direction as the other handle"},
474 {0,
nullptr, 0,
nullptr,
nullptr}};
479 {0,
nullptr, 0,
nullptr,
nullptr}};
486 "Use RGB (Red, Green, Blue) color processing"},
491 "Use HSV (Hue, Saturation, Value) color processing"},
496 "Use HSL (Hue, Saturation, Lightness) color processing"},
497 {0,
nullptr, 0,
nullptr,
nullptr},
501 {
SOCK_FLOAT,
"FLOAT", ICON_NODE_SOCKET_FLOAT,
"Float",
""},
502 {
SOCK_VECTOR,
"VECTOR", ICON_NODE_SOCKET_VECTOR,
"Vector",
""},
503 {
SOCK_RGBA,
"RGBA", ICON_NODE_SOCKET_RGBA,
"Color",
""},
504 {
SOCK_ROTATION,
"ROTATION", ICON_NODE_SOCKET_ROTATION,
"Rotation",
""},
505 {0,
nullptr, 0,
nullptr,
nullptr},
512 {0,
nullptr, 0,
nullptr,
nullptr},
521 {0,
nullptr, 0,
nullptr,
nullptr},
528 {0,
nullptr, 0,
nullptr,
nullptr},
536 N_(
"Areas outside of the image are filled with zero")},
541 N_(
"Areas outside of the image are filled with the closest boundary pixel in the image")},
546 N_(
"Areas outside of the image are filled with repetitions of the image")},
547 {0,
nullptr, 0,
nullptr,
nullptr},
556 N_(
"Use Bilinear interpolation")},
561 N_(
"Use Cubic B-Spline interpolation")},
566 N_(
"Use Anisotropic interpolation")},
567 {0,
nullptr, 0,
nullptr,
nullptr},
577 "Use shaders for all renderers and viewports, unless there exists a more specific output"},
580 {0,
nullptr, 0,
nullptr,
nullptr},
584 {0,
"CryptoObject", 0,
"Object",
"Use Object layer"},
585 {1,
"CryptoMaterial", 0,
"Material",
"Use Material layer"},
586 {2,
"CryptoAsset", 0,
"Asset",
"Use Asset layer"},
587 {0,
nullptr, 0,
nullptr,
nullptr},
600# include <fmt/format.h>
681extern FunctionRNA rna_NodeTree_get_from_context_func;
682extern FunctionRNA rna_NodeTree_valid_socket_type_func;
700 for (
const int i :
types.index_range()) {
702 if (nt->
idname == idname) {
712 return types.index_range().contains(value) ?
types[value] :
nullptr;
724 for (
const int i :
types.index_range()) {
726 if (poll && !poll(
data, nt)) {
771 return types.index_range().contains(value) ?
types[value] :
nullptr;
784 for (
const int i :
types.index_range()) {
786 if (poll && !poll(
data, stype)) {
811static const char *get_legacy_node_type(
const PointerRNA *
ptr)
819 return "CUSTOM GROUP";
824 if (ntype->enum_name_legacy) {
825 return ntype->enum_name_legacy;
827 return ntype->idname.c_str();
832 const char *legacy_type = get_legacy_node_type(
ptr);
834 return strlen(legacy_type);
839 const char *legacy_type = get_legacy_node_type(
ptr);
841 strcpy(value, legacy_type);
844static void rna_Node_bl_idname_get(
PointerRNA *
ptr,
char *value)
855 return ntype->idname.size();
858static void rna_Node_bl_idname_set(
PointerRNA *
ptr,
const char *value)
862 ntype->idname = value;
865static void rna_Node_bl_label_get(
PointerRNA *
ptr,
char *value)
876 return ntype->ui_name.size();
879static void rna_Node_bl_label_set(
PointerRNA *
ptr,
const char *value)
883 ntype->ui_name = value;
886static void rna_Node_bl_description_get(
PointerRNA *
ptr,
char *value)
897 return ntype->ui_description.size();
900static void rna_Node_bl_description_set(
PointerRNA *
ptr,
const char *value)
904 ntype->ui_description = value;
912static void rna_Node_location_get(
PointerRNA *
ptr,
float *value)
918static void move_child_nodes(
bNode &node,
const float2 &delta)
920 for (
bNode *child : node.direct_children_in_frame()) {
921 child->location[0] += delta.
x;
922 child->location[1] += delta.
y;
923 if (child->is_frame()) {
924 move_child_nodes(*child, delta);
929static void rna_Node_location_set(
PointerRNA *
ptr,
const float *value)
932 const float2 new_location =
float2(value) + node_parent_offset(*node);
933 if (node->is_frame()) {
946 if (ntree->
typeinfo->rna_ext.srna) {
947 return ntree->
typeinfo->rna_ext.srna;
950 return &RNA_NodeTree;
963 func = &rna_NodeTree_poll_func;
970 visible = *
static_cast<bool *
>(
ret);
977static void rna_NodeTree_update_reg(
bNodeTree *ntree)
983 func = &rna_NodeTree_update_func;
986 ntree->
typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
991static void rna_NodeTree_get_from_context(
const bContext *
C,
999 void *ret1, *ret2, *ret3;
1004 func = &rna_NodeTree_get_from_context_func;
1014 *r_id = *(
ID **)ret2;
1015 *r_from = *(
ID **)ret3;
1030 func = &rna_NodeTree_valid_socket_type_func;
1037 valid = *
static_cast<bool *
>(
ret);
1044static bool rna_NodeTree_unregister(
Main *bmain,
StructRNA *type)
1067 const char *identifier,
1074 bool have_function[4];
1082 if (validate(&dummy_ntree_ptr,
data, have_function) != 0) {
1086 if (strlen(identifier) >=
sizeof(dummy_ntree.
idname)) {
1089 "Registering node tree class: '%s' is too long, maximum length is %d",
1091 int(
sizeof(dummy_ntree.
idname)));
1100 "Registering node tree class: '%s', bl_idname '%s' has been registered before, "
1101 "unregistering previous",
1103 dummy_nt.
idname.c_str());
1106 if (!rna_NodeTree_unregister(bmain, nt->
rna_ext.
srna)) {
1109 "Registering node tree class: '%s', bl_idname '%s' could not be unregistered",
1111 dummy_nt.
idname.c_str());
1117 nt = MEM_new<blender::bke::bNodeTreeType>(__func__, dummy_nt);
1130 nt->
poll = (have_function[0]) ? rna_NodeTree_poll :
nullptr;
1131 nt->
update = (have_function[1]) ? rna_NodeTree_update_reg :
nullptr;
1149 "Node tree '%s' has undefined type %s",
1172 rna_NodeTree_update(bmain, scene,
ptr);
1237 if (!rna_NodeTree_check(ntree, reports)) {
1250 const char *disabled_hint =
nullptr;
1251 if (ntype->
poll && !ntype->
poll(ntype, ntree, &disabled_hint)) {
1252 if (disabled_hint) {
1255 "Cannot add node of type %s to node tree '%s'\n %s",
1264 "Cannot add node of type %s to node tree '%s'",
1285static void rna_NodeTree_node_remove(
bNodeTree *ntree,
1292 if (!rna_NodeTree_check(ntree, reports)) {
1313 if (!rna_NodeTree_check(ntree, reports)) {
1350 for (
bNode *other_node : ntree->all_nodes()) {
1351 if (other_node->type_legacy == node->type_legacy) {
1365static void node_viewer_set_shortcut_fn(
bNode *node,
bNodeTree &ntree,
int value)
1368 for (
bNode *other_node : ntree.all_nodes()) {
1369 if ((other_node->is_type(
"CompositorNodeViewer") ||
1370 other_node->is_type(
"GeometryNodeViewer")) &&
1371 other_node->custom1 == value)
1382 bNodeTree &ntree = curr_node->owner_tree();
1384 node_viewer_set_shortcut_fn(curr_node, ntree, value);
1390 bNodeTree &ntree = curr_node->owner_tree();
1392 node_viewer_set_shortcut_fn(curr_node, ntree, value);
1401 bool handle_dynamic_sockets)
1403 if (!rna_NodeTree_check(ntree, reports)) {
1412 if (!fromnode || !tonode) {
1422 std::swap(fromsock, tosock);
1423 std::swap(fromnode, tonode);
1426 if (handle_dynamic_sockets) {
1430 new_link.
tonode = tonode;
1431 new_link.
tosock = tosock;
1433 if (fromnode->
typeinfo->insert_link) {
1439 if (tonode->
typeinfo->insert_link) {
1447 tosock = new_link.
tosock;
1450 if (verify_limits) {
1464 if (link->fromsock == fromsock && link->tosock == tosock) {
1483static void rna_NodeTree_link_remove(
bNodeTree *ntree,
1490 if (!rna_NodeTree_check(ntree, reports)) {
1510 if (!rna_NodeTree_check(ntree, reports)) {
1530static void rna_NodeTree_bl_idname_get(
PointerRNA *
ptr,
char *value)
1541 return ntype->idname.size();
1544static void rna_NodeTree_bl_idname_set(
PointerRNA *
ptr,
const char *value)
1548 ntype->idname = value;
1551static void rna_NodeTree_bl_label_get(
PointerRNA *
ptr,
char *value)
1562 return ntype->ui_name.size();
1565static void rna_NodeTree_bl_label_set(
PointerRNA *
ptr,
const char *value)
1569 ntype->ui_name = value;
1572static void rna_NodeTree_bl_description_get(
PointerRNA *
ptr,
char *value)
1579static int rna_NodeTree_bl_description_length(
PointerRNA *
ptr)
1583 return ntype->ui_description.size();
1586static void rna_NodeTree_bl_description_set(
PointerRNA *
ptr,
const char *value)
1590 ntype->ui_description = value;
1593static void rna_NodeTree_debug_lazy_function_graph(
bNodeTree *
tree,
1605 if (
tree->runtime->geometry_nodes_lazy_function_graph_info_mutex.is_dirty()) {
1608 std::string dot_str =
tree->runtime->geometry_nodes_lazy_function_graph_info->graph.to_dot();
1610 *r_len = dot_str.size();
1613static void rna_NodeTree_debug_zone_body_lazy_function_graph(
1624 if (
tree->runtime->geometry_nodes_lazy_function_graph_info_mutex.is_dirty()) {
1627 const auto *graph =
tree->runtime->geometry_nodes_lazy_function_graph_info
1628 ->debug_zone_body_graphs.lookup_default(node->
identifier,
nullptr);
1632 std::string dot_str = graph->to_dot();
1634 *r_len = dot_str.size();
1637static void rna_NodeTree_debug_zone_lazy_function_graph(
1650 tree->runtime->logged_zone_graphs = std::make_unique<blender::bke::LoggedZoneGraphs>();
1659 std::optional<std::string> dot_str =
tree->runtime->logged_zone_graphs->graph_by_zone_id.pop_try(
1665 *r_len = dot_str->size();
1683static void rna_NodeLink_swap_multi_input_sort_id(
1705 if (node->
typeinfo->rna_ext.srna) {
1706 return node->
typeinfo->rna_ext.srna;
1713static std::optional<std::string> rna_Node_path(
const PointerRNA *
ptr)
1716 char name_esc[
sizeof(node->
name) * 2];
1719 return fmt::format(
"nodes[\"{}\"]", name_esc);
1726 return std::nullopt;
1733 if (&
data->iuser !=
ptr->data) {
1740 if (&
data->iuser !=
ptr->data) {
1749 char name_esc[
sizeof(node->
name) * 2];
1751 return fmt::format(
"nodes[\"{}\"].image_user", name_esc);
1754 return std::nullopt;
1767 func = &rna_Node_poll_func;
1774 visible = *
static_cast<bool *
>(
ret);
1781static bool rna_Node_poll_instance(
const bNode *node,
1791 nullptr, node->
typeinfo->rna_ext.srna,
const_cast<bNode *
>(node));
1792 func = &rna_Node_poll_instance_func;
1796 node->
typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1799 visible = *
static_cast<bool *
>(
ret);
1806static bool rna_Node_poll_instance_default(
const bNode *node,
1808 const char **disabled_info)
1811 return rna_Node_poll(node->
typeinfo, ntree, disabled_info);
1820 reinterpret_cast<ID *
>(ntree), node->
typeinfo->rna_ext.srna, node);
1821 func = &rna_Node_update_func;
1824 node->
typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1836 func = &rna_Node_insert_link_func;
1841 params.node.typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1853 func = &rna_Node_init_func;
1867 func = &rna_Node_copy_func;
1871 node->
typeinfo->rna_ext.call(
nullptr,
ptr, func, &list);
1882 func = &rna_Node_free_func;
1885 node->
typeinfo->rna_ext.call(
nullptr,
ptr, func, &list);
1896 func = &rna_Node_draw_buttons_func;
1912 func = &rna_Node_draw_buttons_ext_func;
1922static void rna_Node_draw_label(
const bNodeTree *ntree,
1932 func = &rna_Node_draw_label_func;
1935 const_cast<ID *
>(&ntree->
id), &RNA_Node,
const_cast<bNode *
>(node));
1937 node->
typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1940 rlabel =
static_cast<char *
>(
ret);
1941 BLI_strncpy(label, rlabel !=
nullptr ? rlabel :
"", label_maxncpy);
1946static bool rna_Node_is_registered_node_type(
StructRNA *type)
1960static void rna_Node_is_registered_node_type_runtime(
bContext * ,
1969static bool rna_Node_unregister(
Main *bmain,
StructRNA *type)
1974 if (!nt || rna_Node_is_builtin(nt)) {
1997 const char *identifier,
2003 bNode dummy_node = {};
2006 bool have_function[10];
2017 if (validate(&dummy_node_ptr,
data, have_function) != 0) {
2021 if (strlen(identifier) >=
sizeof(dummy_node.
idname)) {
2024 "Registering node class: '%s' is too long, maximum length is %d",
2026 int(
sizeof(dummy_node.
idname)));
2034 if (rna_Node_is_builtin(nt)) {
2037 "Registering node class: '%s', bl_idname '%s' is a builtin node",
2039 dummy_nt.
idname.c_str());
2045 "Registering node class: '%s', bl_idname '%s' has been registered before, "
2046 "unregistering previous",
2048 dummy_nt.
idname.c_str());
2051 if (!rna_Node_unregister(bmain, nt->
rna_ext.
srna)) {
2054 "Registering node class: '%s', bl_idname '%s' could not be unregistered",
2056 dummy_nt.
idname.c_str());
2062 nt = MEM_new<blender::bke::bNodeType>(__func__, dummy_nt);
2075 nt->
rna_ext.
srna,
"is_registered_node_type", rna_Node_is_registered_node_type_runtime);
2084 nt->
poll = (have_function[0]) ? rna_Node_poll :
nullptr;
2085 nt->
poll_instance = (have_function[1]) ? rna_Node_poll_instance : rna_Node_poll_instance_default;
2111 const char *identifier,
2117 bmain, reports, &RNA_Node,
data, identifier, validate, call,
free);
2138 if (value_supported(item)) {
2147static bool geometry_node_asset_trait_flag_get(
PointerRNA *
ptr,
2157static void geometry_node_asset_trait_flag_set(
PointerRNA *
ptr,
2168static bool rna_GeometryNodeTree_is_tool_get(
PointerRNA *
ptr)
2172static void rna_GeometryNodeTree_is_tool_set(
PointerRNA *
ptr,
bool value)
2177static bool rna_GeometryNodeTree_is_modifier_get(
PointerRNA *
ptr)
2181static void rna_GeometryNodeTree_is_modifier_set(
PointerRNA *
ptr,
bool value)
2186static bool rna_GeometryNodeTree_is_mode_object_get(
PointerRNA *
ptr)
2190static void rna_GeometryNodeTree_is_mode_object_set(
PointerRNA *
ptr,
bool value)
2195static bool rna_GeometryNodeTree_is_mode_edit_get(
PointerRNA *
ptr)
2199static void rna_GeometryNodeTree_is_mode_edit_set(
PointerRNA *
ptr,
bool value)
2204static bool rna_GeometryNodeTree_is_mode_sculpt_get(
PointerRNA *
ptr)
2208static void rna_GeometryNodeTree_is_mode_sculpt_set(
PointerRNA *
ptr,
bool value)
2213static bool rna_GeometryNodeTree_is_mode_paint_get(
PointerRNA *
ptr)
2217static void rna_GeometryNodeTree_is_mode_paint_set(
PointerRNA *
ptr,
bool value)
2222static bool rna_GeometryNodeTree_is_type_mesh_get(
PointerRNA *
ptr)
2226static void rna_GeometryNodeTree_is_type_mesh_set(
PointerRNA *
ptr,
bool value)
2231static bool rna_GeometryNodeTree_is_type_curve_get(
PointerRNA *
ptr)
2235static void rna_GeometryNodeTree_is_type_curve_set(
PointerRNA *
ptr,
bool value)
2240static bool rna_GeometryNodeTree_is_type_pointcloud_get(
PointerRNA *
ptr)
2244static void rna_GeometryNodeTree_is_type_pointcloud_set(
PointerRNA *
ptr,
bool value)
2249static bool rna_GeometryNodeTree_use_wait_for_click_get(
PointerRNA *
ptr)
2253static void rna_GeometryNodeTree_use_wait_for_click_set(
PointerRNA *
ptr,
bool value)
2258static bool rna_GeometryNodeTree_is_type_grease_pencil_get(
PointerRNA *
ptr)
2262static void rna_GeometryNodeTree_is_type_grease_pencil_set(
PointerRNA *
ptr,
bool value)
2267static bool rna_GeometryNodeTree_modifier_manage_panel_get(
PointerRNA *
ptr)
2271static void rna_GeometryNodeTree_modifier_manage_panel_set(
PointerRNA *
ptr,
bool value)
2303static bool generic_attribute_type_supported_with_socket(
const EnumPropertyItem *item)
2309static const EnumPropertyItem *rna_GeometryNodeAttributeType_type_with_socket_itemf(
2314 generic_attribute_type_supported_with_socket);
2317static const EnumPropertyItem *rna_GeometryNodeAttributeDomain_attribute_domain_itemf(
2338 const char *identifier,
2344 bmain, reports, &RNA_ShaderNode,
data, identifier, validate, call,
free);
2360 const char *identifier,
2366 bmain, reports, &RNA_CompositorNode,
data, identifier, validate, call,
free);
2382 const char *identifier,
2388 bmain, reports, &RNA_TextureNode,
data, identifier, validate, call,
free);
2404 const char *identifier,
2410 bmain, reports, &RNA_GeometryNode,
data, identifier, validate, call,
free);
2426 const char *identifier,
2432 bmain, reports, &RNA_FunctionNode,
data, identifier, validate, call,
free);
2471 if (!parent->is_frame()) {
2496static bool allow_identifier_lookup(
const bNode &node)
2514 if (allow_identifier_lookup(node)) {
2516 if (socket->is_available()) {
2517 if (socket->identifier == key) {
2524 if (socket->is_available()) {
2525 if (socket->name == key) {
2561 if (!parent->is_frame()) {
2606static void rna_Node_name_set(
PointerRNA *
ptr,
const char *value)
2610 char oldname[
sizeof(node->
name)];
2629static bool allow_adding_sockets(
const bNode &node)
2634static bool allow_changing_sockets(
bNode *node)
2645 const char *identifier,
2646 const bool use_multi_input)
2648 if (!allow_adding_sockets(*node)) {
2652 if (identifier ==
nullptr) {
2661 if (sock ==
nullptr) {
2665 if (use_multi_input) {
2681 const char *identifier,
2682 const bool use_multi_input)
2684 if (!allow_adding_sockets(*node)) {
2689 if (use_multi_input) {
2694 if (identifier ==
nullptr) {
2703 if (sock ==
nullptr) {
2714static void rna_Node_socket_remove(
2717 if (!allow_changing_sockets(node)) {
2737 if (!allow_changing_sockets(node)) {
2746 nextsock = sock->
next;
2756 if (!allow_changing_sockets(node)) {
2765 nextsock = sock->
next;
2773static void rna_Node_inputs_move(
2776 if (!allow_changing_sockets(node)) {
2784 if (from_index == to_index) {
2787 if (from_index < 0 || to_index < 0) {
2792 if (to_index < from_index) {
2812static void rna_Node_outputs_move(
2815 if (!allow_changing_sockets(node)) {
2823 if (from_index == to_index) {
2826 if (from_index < 0 || to_index < 0) {
2831 if (to_index < from_index) {
2851static void rna_Node_width_range(
2859static void rna_Node_height_range(
2867static void rna_Node_dimensions_get(
PointerRNA *
ptr,
float *value)
2871 value[0] = dimensions[0];
2872 value[1] = dimensions[1];
2877static void rna_NodeInternalSocketTemplate_name_get(
PointerRNA *
ptr,
char *value)
2881 strcpy(value, stemp->
name);
2884static int rna_NodeInternalSocketTemplate_name_length(
PointerRNA *
ptr)
2888 return strlen(stemp->
name);
2891static void rna_NodeInternalSocketTemplate_identifier_get(
PointerRNA *
ptr,
char *value)
2898static int rna_NodeInternalSocketTemplate_identifier_length(
PointerRNA *
ptr)
2905static int rna_NodeInternalSocketTemplate_type_get(
PointerRNA *
ptr)
2916 if (ntype && ntype->
inputs) {
2923 if (
i == index && stemp->
type >= 0) {
2925 nullptr, &RNA_NodeInternalSocketTemplate, stemp);
2936 if (ntype && ntype->
outputs) {
2943 if (
i == index && stemp->
type >= 0) {
2945 nullptr, &RNA_NodeInternalSocketTemplate, stemp);
2956 const char *disabled_hint;
2957 return ntype && (!ntype->
poll || ntype->
poll(ntype, ntree, &disabled_hint));
2960static bool rna_NodeInternal_poll_instance(
bNode *node,
bNodeTree *ntree)
2963 const char *disabled_hint;
2969 return !ntype->
poll || ntype->
poll(ntype, ntree, &disabled_hint);
2973static void rna_NodeInternal_update(
ID *
id,
bNode *node,
Main *bmain)
2982 if (node->
typeinfo->draw_buttons) {
2990 if (node->
typeinfo->draw_buttons_ex) {
2994 else if (node->
typeinfo->draw_buttons) {
3003 const char *identifier,
3009 bmain, reports, &RNA_NodeCustomGroup,
data, identifier, validate, call,
free);
3022static StructRNA *rna_GeometryNodeCustomGroup_register(
Main *bmain,
3025 const char *identifier,
3031 bmain, reports, &RNA_GeometryNodeCustomGroup,
data, identifier, validate, call,
free);
3050static StructRNA *rna_ShaderNodeCustomGroup_register(
Main *bmain,
3053 const char *identifier,
3059 bmain, reports, &RNA_ShaderNodeCustomGroup,
data, identifier, validate, call,
free);
3076static StructRNA *rna_CompositorNodeCustomGroup_register(
Main *bmain,
3079 const char *identifier,
3085 bmain, reports, &RNA_CompositorNodeCustomGroup,
data, identifier, validate, call,
free);
3101static void rna_CompositorNode_tag_need_exec(
bNode *node)
3135 const char *disabled_hint =
nullptr;
3144 node->
id = &ngroup->id;
3158 const char *disabled_hint =
nullptr;
3171 node->
id =
static_cast<ID *
>(value.
data);
3202 int i = 0, totitem = 0;
3208 if (rl->
name[0] ==
'\0') {
3231 const auto rotation_supported_mix = [&](
const EnumPropertyItem *item) ->
bool {
3261 if (ima ==
nullptr || ima->rr ==
nullptr) {
3266 rl =
static_cast<RenderLayer *
>(ima->rr->layers.first);
3267 item = renderresult_layers_add_enum(rl);
3285 if (!ima || !(ima->rr)) {
3303 if (!ima || !(ima->rr)) {
3314 int i = 1, totitem = 0;
3323 if (rv->
name[0] ==
'\0') {
3355 if (ima ==
nullptr || ima->rr ==
nullptr) {
3360 rv =
static_cast<RenderView *
>(ima->rr->views.first);
3361 item = renderresult_views_add_enum(rv);
3378 if (sce ==
nullptr) {
3383 rl =
static_cast<RenderLayer *
>(sce->view_layers.first);
3384 item = renderresult_layers_add_enum(rl);
3411static void rna_NodeColorBalance_input_whitepoint_get(
PointerRNA *
ptr,
float value[3])
3415 *node,
SOCK_IN,
"Input Temperature");
3423static void rna_NodeColorBalance_input_whitepoint_set(
PointerRNA *
ptr,
const float value[3])
3427 *node,
SOCK_IN,
"Input Temperature");
3435static void rna_NodeColorBalance_output_whitepoint_get(
PointerRNA *
ptr,
float value[3])
3439 *node,
SOCK_IN,
"Output Temperature");
3447static void rna_NodeColorBalance_output_whitepoint_set(
PointerRNA *
ptr,
const float value[3])
3451 *node,
SOCK_IN,
"Output Temperature");
3459static void rna_NodeCryptomatte_source_set(
PointerRNA *
ptr,
int value)
3462 if (node->
id && node->
custom1 != value) {
3469static int rna_NodeCryptomatte_layer_name_get(
PointerRNA *
ptr)
3475 if (
STREQLEN(storage->layer_name, layer->name,
sizeof(storage->layer_name))) {
3482static void rna_NodeCryptomatte_layer_name_set(
PointerRNA *
ptr,
int new_value)
3507 temp.
value = layer_index;
3532 rna_Node_scene_set(
ptr, value, reports);
3557 node->
id =
static_cast<ID *
>(value.
data);
3567static void rna_NodeCryptomatte_matte_get(
PointerRNA *
ptr,
char *value)
3572 strcpy(value, matte_id);
3581 int result = strlen(matte_id);
3586static void rna_NodeCryptomatte_matte_set(
PointerRNA *
ptr,
const char *value)
3611 bNode *output_node = zone_type.get_corresponding_output(*ntree, *node);
3616static bool rna_Node_pair_with_output(
3626 "Cannot pair zone input node %s with %s because it does not have the same zone type",
3631 for (
const bNode *other_input_node : ntree->nodes_by_type(zone_type.
input_idname)) {
3632 if (other_input_node != node) {
3636 "The output node %s is already paired with %s",
3638 other_input_node->name);
3652template<
typename Accessor>
3653static void rna_Node_ItemArray_remove(
ID *
id,
3657 typename Accessor::ItemT *item_to_remove)
3660 if (item_to_remove < *ref.items || item_to_remove >= *ref.
items + *ref.
items_num) {
3661 if constexpr (Accessor::has_name) {
3662 char **name_ptr = Accessor::get_name(*item_to_remove);
3663 if (name_ptr && *name_ptr) {
3683template<
typename Accessor>
static void rna_Node_ItemArray_clear(
ID *
id,
bNode *node,
Main *bmain)
3694template<
typename Accessor>
3695static void rna_Node_ItemArray_move(
3696 ID *
id,
bNode *node,
Main *bmain,
const int from_index,
const int to_index)
3700 if (from_index < 0 || to_index < 0 || from_index >= items_num || to_index >= items_num) {
3715 typename Accessor::ItemT *active_item =
nullptr;
3716 const int active_index = *ref.active_index;
3717 const int items_num = *ref.items_num;
3718 if (active_index >= 0 && active_index < items_num) {
3719 active_item = &(*ref.items)[active_index];
3723template<
typename Accessor>
3728 using ItemT =
typename Accessor::ItemT;
3730 ItemT *item =
static_cast<ItemT *
>(value.
data);
3738template<
typename Accessor>
3741 using ItemT =
typename Accessor::ItemT;
3743 ItemT &item = *
static_cast<ItemT *
>(
ptr->data);
3751template<
typename Accessor>
3759 return itemf_function_check(
3765template<
typename Accessor>
3766static void rna_Node_ItemArray_item_name_set(
PointerRNA *
ptr,
const char *value)
3768 using ItemT =
typename Accessor::ItemT;
3770 ItemT &item = *
static_cast<ItemT *
>(
ptr->data);
3776template<
typename Accessors>
3777static void rna_Node_ItemArray_item_color_get(
PointerRNA *
ptr,
float *values)
3779 using ItemT =
typename Accessors::ItemT;
3780 ItemT &item = *
static_cast<ItemT *
>(
ptr->data);
3782 Accessors::get_socket_type(item), 0);
3786template<
typename Accessor>
3787typename Accessor::ItemT *rna_Node_ItemArray_new_with_socket_and_name(
3790 using ItemT =
typename Accessor::ItemT;
3807template<
typename Accessor>
3813 using ItemT =
typename Accessor::ItemT;
3816 const ItemT &item = *
static_cast<const ItemT *
>(
ptr->data);
3841 return itemf_function_check(
3847static const EnumPropertyItem *rna_NodeGeometryCaptureAttributeItem_data_type_itemf(
3872static void rna_ShaderNodeTexIES_mode_set(
PointerRNA *
ptr,
int value)
3877 if (nss->mode != value) {
3879 nss->filepath[0] =
'\0';
3883 Text *text =
reinterpret_cast<Text *
>(node->
id);
3897static void rna_ShaderNodeScript_mode_set(
PointerRNA *
ptr,
int value)
3902 if (nss->mode != value) {
3904 nss->filepath[0] =
'\0';
3909 Text *text =
reinterpret_cast<Text *
>(node->
id);
3922 if (nss->bytecode) {
3924 nss->bytecode =
nullptr;
3927 nss->bytecode_hash[0] =
'\0';
3931static void rna_ShaderNodeScript_bytecode_get(
PointerRNA *
ptr,
char *value)
3936 strcpy(value, (nss->bytecode) ? nss->bytecode :
"");
3939static int rna_ShaderNodeScript_bytecode_length(
PointerRNA *
ptr)
3944 return (nss->bytecode) ? strlen(nss->bytecode) : 0;
3947static void rna_ShaderNodeScript_bytecode_set(
PointerRNA *
ptr,
const char *value)
3952 if (nss->bytecode) {
3956 if (value && value[0]) {
3960 nss->bytecode =
nullptr;
3970 if (engine_type && engine_type->update_script_node) {
3973 engine_type->update_script_node(engine, ntree, node);
3991static void rna_ShaderNode_is_active_output_set(
PointerRNA *
ptr,
bool value)
3998 for (
bNode *other_node : ntree->all_nodes()) {
3999 if (other_node->type_legacy == node->
type_legacy) {
4010static void rna_GroupOutput_is_active_output_set(
PointerRNA *
ptr,
bool value)
4016 for (
bNode *other_node : ntree->all_nodes()) {
4017 if (other_node->is_group_output()) {
4028static int rna_NodeConvertColorSpace_from_color_space_get(
PointerRNA *
ptr)
4035static void rna_NodeConvertColorSpace_from_color_space_set(
PointerRNA *
ptr,
int value)
4045static int rna_NodeConvertColorSpace_to_color_space_get(
PointerRNA *
ptr)
4052static void rna_NodeConvertColorSpace_to_color_space_set(
PointerRNA *
ptr,
int value)
4063static void rna_reroute_node_socket_type_set(
PointerRNA *
ptr,
const char *value)
4070 if (value ==
nullptr) {
4074 if (socket_type ==
nullptr) {
4129 {0,
"PLACEHOLDER", 0,
"Placeholder",
""},
4130 {0,
nullptr, 0,
nullptr,
nullptr},
4134 {0,
"ALL", 0,
"All",
""},
4135 {0,
nullptr, 0,
nullptr,
nullptr},
4139 {0,
"PLACEHOLDER", 0,
"Placeholder",
""},
4140 {0,
nullptr, 0,
nullptr,
nullptr},
4144 {0,
"ITUBT601", 0,
"ITU 601",
""},
4145 {1,
"ITUBT709", 0,
"ITU 709",
""},
4146 {2,
"JFIF", 0,
"JPEG",
""},
4147 {0,
nullptr, 0,
nullptr,
nullptr},
4157 "GGX with additional correction to account for multiple scattering, preserve energy and "
4158 "prevent unexpected darkening at high roughness"},
4159 {0,
nullptr, 0,
nullptr,
nullptr},
4164 "PHYSICAL_CONDUCTOR",
4166 "Physical Conductor",
4167 "Fresnel conductor based on the complex refractive index per color channel"},
4172 "An approximation of the Fresnel conductor curve based on the colors at perpendicular and "
4173 "near-grazing (roughly 82°) angles"},
4174 {0,
nullptr, 0,
nullptr,
nullptr},
4185 "GGX with additional correction to account for multiple scattering, preserve energy and "
4186 "prevent unexpected darkening at high roughness"},
4187 {0,
nullptr, 0,
nullptr,
nullptr},
4197 "GGX with additional correction to account for multiple scattering, preserve energy and "
4198 "prevent unexpected darkening at high roughness"},
4199 {0,
nullptr, 0,
nullptr,
nullptr},
4205 {0,
nullptr, 0,
nullptr,
nullptr},
4209 {
SHD_SHEEN_ASHIKHMIN,
"ASHIKHMIN", 0,
"Ashikhmin",
"Classic Ashikhmin velvet (legacy model)"},
4214 "Microflake-based model of multiple scattering between normal-oriented fibers"},
4215 {0,
nullptr, 0,
nullptr,
nullptr},
4221 {0,
nullptr, 0,
nullptr,
nullptr},
4229 "The light that bounces off the surface of the hair"},
4234 "The light that passes through the hair and exits on the other side"},
4235 {0,
nullptr, 0,
nullptr,
nullptr},
4243 "Near-field hair scattering model by Chiang et al. 2016, suitable for close-up looks, but is "
4244 "more noisy when viewing from a distance."},
4249 "Multi-scale hair scattering model by Huang et al. 2022, suitable for viewing both up close "
4250 "and from a distance, supports elliptical cross-sections and has more precise highlight in "
4251 "forward scattering directions."},
4252 {0,
nullptr, 0,
nullptr,
nullptr},
4259 "Absorption Coefficient",
4260 "Directly set the absorption coefficient \"sigma_a\" (this is not the most intuitive way to "
4265 "Melanin Concentration",
4266 "Define the melanin concentrations below to get the most realistic-looking hair (you can get "
4267 "the concentrations for different types of hair online)"},
4272 "Choose the color of your preference, and the shader will approximate the absorption "
4273 "coefficient to render lookalike hair"},
4274 {0,
nullptr, 0,
nullptr,
nullptr},
4280 {0,
nullptr, 0,
nullptr,
nullptr},
4286 {0,
nullptr, 0,
nullptr,
nullptr},
4295 "GGX with additional correction to account for multiple scattering, preserve energy and "
4296 "prevent unexpected darkening at high roughness"},
4297 {0,
nullptr, 0,
nullptr,
nullptr},
4304 "Christensen-Burley",
4305 "Approximation to physically based volume scattering"},
4310 "Volumetric approximation to physically based volume scattering, using the scattering radius "
4315 "Random Walk (Skin)",
4316 "Volumetric approximation to physically based volume scattering, with scattering radius "
4317 "automatically adjusted to match color textures. Designed for skin shading."},
4318 {0,
nullptr, 0,
nullptr,
nullptr}};
4325 "Cause the image to repeat horizontally and vertically"},
4330 "Extend by repeating edge pixels of the image"},
4335 "Clip to image size and set exterior pixels as transparent"},
4340 "Repeatedly flip the image horizontally and vertically"},
4341 {0,
nullptr, 0,
nullptr,
nullptr},
4346 "HENYEY_GREENSTEIN",
4348 "Henyey-Greenstein",
4349 "Henyey-Greenstein, default phase function for the scattering of light"},
4354 "Fournier-Forand phase function, used for the scattering of light in underwater "
4360 "Draine phase functions, mostly used for the scattering of light in interstellar dust"},
4365 "Rayleigh phase function, mostly used for particles smaller than the wavelength of light, "
4366 "such as scattering of sunlight in earth's atmosphere"},
4371 "Approximation of Mie scattering in water droplets, used for scattering in clouds and fog"},
4372 {0,
nullptr, 0,
nullptr,
nullptr},
4377 const char *accessor,
4378 const bool add_socket_type,
4379 const bool add_vector_socket_dimensions =
false)
4384 char name_set_func[128];
4385 SNPRINTF(name_set_func,
"rna_Node_ItemArray_item_name_set<%s>", accessor);
4387 char item_update_func[128];
4388 SNPRINTF(item_update_func,
"rna_Node_ItemArray_item_update<%s>", accessor);
4389 const char *item_update_func_ptr = allocator.
copy_string(item_update_func).
c_str();
4391 char socket_type_itemf[128];
4392 SNPRINTF(socket_type_itemf,
"rna_Node_ItemArray_socket_type_itemf<%s>", accessor);
4394 char color_get_func[128];
4395 SNPRINTF(color_get_func,
"rna_Node_ItemArray_item_color_get<%s>", accessor);
4404 if (add_socket_type) {
4413 if (add_vector_socket_dimensions) {
4429 prop,
"Color",
"Color of the corresponding socket type in the node editor");
4433 const char *item_name,
4434 const char *accessor_name)
4440 char remove_call[128];
4441 SNPRINTF(remove_call,
"rna_Node_ItemArray_remove<%s>", accessor_name);
4442 char clear_call[128];
4443 SNPRINTF(clear_call,
"rna_Node_ItemArray_clear<%s>", accessor_name);
4444 char move_call[128];
4445 SNPRINTF(move_call,
"rna_Node_ItemArray_move<%s>", accessor_name);
4450 parm =
RNA_def_pointer(func,
"item", item_name,
"Item",
"The item to remove");
4461 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the item to move", 0, 10000);
4464 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the item", 0, 10000);
4469 const char *item_name,
4470 const char *accessor_name)
4477 SNPRINTF(
name,
"rna_Node_ItemArray_new_with_socket_and_name<%s>", accessor_name);
4487 "Socket type of the item");
4507 prop,
"Active Output",
"True if this node is used as the active group output");
4520 prop,
nullptr,
"rna_NodeGroup_node_tree_set",
nullptr,
"rna_NodeGroup_node_tree_poll");
4528 const char *struct_name,
4529 const char *base_name,
4530 const char *ui_name,
4531 const char *ui_desc,
4532 const char *reg_func)
4586 {
CD_PROP_FLOAT,
"FLOAT", ICON_NODE_SOCKET_FLOAT,
"Float",
"Floating-point value"},
4589 ICON_NODE_SOCKET_VECTOR,
4591 "3D vector with floating-point values"},
4592 {0,
nullptr, 0,
nullptr,
nullptr},
4640 {0,
nullptr, 0,
nullptr,
nullptr},
4685 prop,
"Rounding Mode",
"Method used to convert the float to an integer");
4794 prop,
"Node Output",
"For node-based textures, which output node to use");
4881 prop,
"Active Output",
"True if this node is used as the active output");
4889 prop,
"Target",
"Which renderer and viewport shading types to use the shaders for");
4933 "The attribute is associated with the object geometry, and its value "
4934 "varies from vertex to vertex, or within the object volume"},
4939 "The attribute is associated with the object or mesh data-block itself, "
4940 "and its value is uniform"},
4945 "The attribute is associated with the instancer particle system or object, "
4946 "falling back to the Object mode if the attribute isn't found, or the object "
4947 "is not instanced"},
4952 "The attribute is associated with the View Layer, Scene or World that is being rendered"},
4953 {0,
nullptr, 0,
nullptr,
nullptr},
4990 "SINGLE_SCATTERING",
4992 "Single Scattering",
4993 "Single scattering sky model"},
4995 "MULTIPLE_SCATTERING",
4997 "Multiple Scattering",
4998 "Multiple scattering sky model (more accurate)"},
5000 {
SHD_SKY_HOSEK,
"HOSEK_WILKIE", 0,
"Hosek / Wilkie",
"Hosek / Wilkie 2012 (Legacy)"},
5001 {0,
nullptr, 0,
nullptr,
nullptr},
5003 static float default_dir[3] = {0.0f, 0.0f, 1.0f};
5055 "Density of air molecules.\n"
5056 "0 means no air, 1 means urban city air");
5064 "Density of dust, pollution and water droplets.\n"
5065 "0 means no aerosols, 1 means urban city aerosols");
5073 "Density of ozone layer.\n"
5074 "0 means no ozone, 1 means urban city ozone");
5095 prop,
"Ground Albedo",
"Ground color that is subtly reflected in the sky");
5101 {
SHD_INTERP_CLOSEST,
"Closest", 0,
"Closest",
"No interpolation (sample closest texel)"},
5103 {
SHD_INTERP_SMART,
"Smart", 0,
"Smart",
"Bicubic when magnifying, else bilinear (OSL only)"},
5104 {0,
nullptr, 0,
nullptr,
nullptr},
5114 "Equirectangular or latitude-longitude projection"},
5119 "Projection from an orthographic photo of a mirror ball"},
5120 {0,
nullptr, 0,
nullptr,
nullptr},
5152 "Parameters defining which layer, pass and frame of the image is displayed");
5163 "Use the 2D vector (X, Y) as input. The Z component is ignored."},
5165 {0,
nullptr, 0,
nullptr,
nullptr},
5186 "Image is projected flat using the X and Y coordinates of the texture vector"},
5191 "Image is projected using different components for each side of the object space bounding "
5197 "Image is projected spherically using the Z axis as central"},
5202 "Image is projected from the tube using the Z axis as central"},
5203 {0,
nullptr, 0,
nullptr,
nullptr},
5222 prop,
"Projection",
"Method to project 2D image on object with a 3D texture vector");
5233 prop,
"Projection Blend",
"For box projection, amount of blend to use between sides");
5239 prop,
"Extension",
"How the image is extrapolated past its original bounds");
5249 "Parameters defining which layer, pass and frame of the image is displayed");
5268 {
SHD_INTERP_CLOSEST,
"Closest", 0,
"Closest",
"No interpolation (sample closest texel)"},
5270 {0,
nullptr, 0,
nullptr,
nullptr},
5285 prop,
"Extension",
"How the image is extrapolated past its original bounds");
5351 "Create a progression easing from one step to the next"},
5358 "Create a quadratic progression in the shape of a sphere"},
5360 {0,
nullptr, 0,
nullptr,
nullptr},
5381 "More uneven result (varies with location), more similar to a real terrain"},
5383 "RIDGED_MULTIFRACTAL",
5385 "Ridged Multifractal",
5386 "Create sharp peaks"},
5388 "HYBRID_MULTIFRACTAL",
5390 "Hybrid Multifractal",
5391 "Create peaks and valleys with different roughness values"},
5392 {
SHD_NOISE_FBM,
"FBM", 0,
"fBM",
"The standard fractal Perlin noise"},
5397 "Similar to Hybrid Multifractal creates a heterogeneous terrain, but with the likeness of "
5399 {0,
nullptr, 0,
nullptr,
nullptr},
5446 "How often rows are offset. A value of 2 gives an even/uneven pattern of rows.");
5454 prop,
"Squash Frequency",
"How often rows consist of \"squished\" bricks");
5462 prop,
"Offset Amount",
"Determines the brick offset of the various rows");
5472 "Factor to adjust the brick's width for particular rows determined by the Offset Frequency");
5497 {0,
nullptr, 0,
nullptr,
nullptr}};
5504 "Computes the distance to the closest point as well as its position and color"},
5509 "Computes the distance to the second closest point as well as its position and color"},
5514 "Smoothed version of F1. Weighted sum of neighbor voronoi cells."},
5519 "Computes the distance to the edge of the voronoi cell"},
5524 "Computes the radius of the n-sphere inscribed in the voronoi cell"},
5525 {0,
nullptr, 0,
nullptr,
nullptr}};
5543 prop,
"Distance Metric",
"The distance metric used to compute the texture");
5550 prop,
"Feature Output",
"The Voronoi feature that the node will compute");
5562 {
SHD_WAVE_BANDS,
"BANDS", 0,
"Bands",
"Use standard wave texture in bands"},
5563 {
SHD_WAVE_RINGS,
"RINGS", 0,
"Rings",
"Use wave texture in rings"},
5564 {0,
nullptr, 0,
nullptr,
nullptr},
5572 {0,
nullptr, 0,
nullptr,
nullptr},
5583 "Rings along spherical distance"},
5584 {0,
nullptr, 0,
nullptr,
nullptr},
5591 {0,
nullptr, 0,
nullptr,
nullptr},
5646 prop,
"Object",
"Use coordinates from this object (for object texture coordinates output)");
5652 prop,
"From Instancer",
"Use the parent of the instance object if possible");
5665 "Transform a normal vector with unit length"},
5666 {0,
nullptr, 0,
nullptr,
nullptr},
5673 {0,
nullptr, 0,
nullptr,
nullptr},
5772 prop,
"Subsurface Method",
"Method for rendering subsurface scattering");
5827 prop,
"Invert",
"Invert the bump mapping direction to push into the surface instead of out");
5861 prop,
"Color Parametrization",
"Select the shader's color parametrization");
5874 prop,
"From Instancer",
"Use the parent of the instance object if possible");
5906 prop,
"Use Tips",
"Lower half of the texture is for tips of the stroke");
5913 {
SHD_SPACE_TANGENT,
"TANGENT", 0,
"Tangent Space",
"Tangent space normal mapping"},
5914 {
SHD_SPACE_OBJECT,
"OBJECT", 0,
"Object Space",
"Object space normal mapping"},
5915 {
SHD_SPACE_WORLD,
"WORLD", 0,
"World Space",
"World space normal mapping"},
5919 "Blender Object Space",
5920 "Object space normal mapping, compatible with Blender render baking"},
5924 "Blender World Space",
5925 "World space normal mapping, compatible with Blender render baking"},
5926 {0,
nullptr, 0,
nullptr,
nullptr},
5956 "Normalize the X coordinate of the Segment Coordinates output to a [0, 1] interval and "
5957 "offset the Y coordinate into a [0, infinity) interval. When checked, the textures are "
5958 "stretched to fit into each angular segment. When not checked, the parts of the textures "
5959 "that don't fit into each angular segment are cropped");
5970 "Displacement is in object space, affected by object scale"},
5975 "Displacement is in world space, not affected by object scale"},
5976 {0,
nullptr, 0,
nullptr,
nullptr},
5997 "Tangent space vector displacement mapping"},
5998 {
SHD_SPACE_OBJECT,
"OBJECT", 0,
"Object Space",
"Object space vector displacement mapping"},
5999 {
SHD_SPACE_WORLD,
"WORLD", 0,
"World Space",
"World space vector displacement mapping"},
6000 {0,
nullptr, 0,
nullptr,
nullptr},
6017 {
SHD_TANGENT_RADIAL,
"RADIAL", 0,
"Radial",
"Radial tangent around the X, Y or Z axis"},
6019 {0,
nullptr, 0,
nullptr,
nullptr},
6026 {0,
nullptr, 0,
nullptr,
nullptr},
6080 prop,
"Only Local",
"Only consider the object itself when computing AO");
6118 prop,
"Source",
"Whether the IES file is loaded from disk or from a text data-block");
6180 "Automatically update the shader when the .osl file changes (external scripts only)");
6184 "rna_ShaderNodeScript_bytecode_get",
6185 "rna_ShaderNodeScript_bytecode_length",
6186 "rna_ShaderNodeScript_bytecode_set");
6192 prop,
"Bytecode Hash",
"Hash of compile bytecode, for quick equality checking");
6201 func =
RNA_def_function(srna,
"find_socket",
"rna_ShaderNodeScript_find_socket");
6203 parm =
RNA_def_string(func,
"name",
nullptr, 0,
"Socket name",
"");
6205 RNA_def_boolean(func,
"is_output",
false,
"Output",
"Whether the socket is an output");
6209 func =
RNA_def_function(srna,
"add_socket",
"rna_ShaderNodeScript_add_socket");
6216 RNA_def_boolean(func,
"is_output",
false,
"Output",
"Whether the socket is an output");
6220 func =
RNA_def_function(srna,
"remove_socket",
"rna_ShaderNodeScript_remove_socket");
6238 prop,
"Frames",
"Number of images of a movie to use");
6248 "Global starting frame of the movie/sequence, assuming first picture has a #1");
6256 prop,
"Offset",
"Offset the number of the frame to use in the animation");
6262 prop,
"Cyclic",
"Cycle the images in the movie");
6347 "Override Node Format",
6348 "Use a different format instead of the node format for this file");
6354 prop,
"Save as Render",
"Apply render part of display transform when saving byte image");
6368 srna,
"NodeCompositorFileOutputItem",
"FileOutputItemsAccessor");
6370 srna,
"NodeCompositorFileOutputItem",
"FileOutputItemsAccessor");
6407 "The base name of the file. Other information might be included in the "
6408 "final file name depending on the node options");
6419 prop,
"Save as Render",
"Apply render part of display transform when saving byte image");
6432 "rna_NodeConvertColorSpace_from_color_space_get",
6433 "rna_NodeConvertColorSpace_from_color_space_set",
6434 "rna_NodeConvertColorSpace_color_space_itemf");
6442 "rna_NodeConvertColorSpace_to_color_space_get",
6443 "rna_NodeConvertColorSpace_to_color_space_set",
6444 "rna_NodeConvertColorSpace_color_space_itemf");
6470 {8,
"OCTAGON", 0,
"Octagonal",
"8 sides"},
6471 {7,
"HEPTAGON", 0,
"Heptagonal",
"7 sides"},
6472 {6,
"HEXAGON", 0,
"Hexagonal",
"6 sides"},
6473 {5,
"PENTAGON", 0,
"Pentagonal",
"5 sides"},
6474 {4,
"SQUARE", 0,
"Square",
"4 sides"},
6475 {3,
"TRIANGLE", 0,
"Triangular",
"3 sides"},
6476 {0,
"CIRCLE", 0,
"Circular",
""},
6477 {0,
nullptr, 0,
nullptr,
nullptr},
6487 prop,
"Scene",
"Scene from which to select the active camera (render scene if undefined)");
6510 "Amount of focal blur, 128 (infinity) is perfect focus, half the value doubles "
6524 "Disable when using an image as input instead of actual z-buffer "
6525 "(auto enabled if node not image based, eg. time node)");
6534 "Scale the Z input when not using a z-buffer, controls maximum blur designated "
6535 "by the color white or input value 1");
6546 "rna_NodeColorBalance_input_whitepoint_get",
6547 "rna_NodeColorBalance_input_whitepoint_set",
6550 "Input White Point",
6551 "The color which gets mapped to white "
6552 "(automatically converted to/from temperature and tint)");
6558 "rna_NodeColorBalance_output_whitepoint_get",
6559 "rna_NodeColorBalance_output_whitepoint_set",
6562 "Output White Point",
6563 "The color which gets white gets mapped to "
6564 "(automatically converted to/from temperature and tint)");
6586 "Use RGB (Red, Green, Blue) color processing"},
6591 "Use HSV (Hue, Saturation, Value) color processing"},
6596 "Use HSL (Hue, Saturation, Lightness) color processing"},
6601 "Use YCbCr (Y - luma, Cb - blue-difference chroma, Cr - red-difference chroma) color "
6607 "Use YUV (Y - luma, U V - chroma) color processing"},
6608 {0,
nullptr, 0,
nullptr,
nullptr},
6783 static float default_1[3] = {1.0f, 1.0f, 1.0f};
6787 "rna_NodeCryptomatte_matte_get",
6788 "rna_NodeCryptomatte_matte_length",
6789 "rna_NodeCryptomatte_matte_set");
6791 prop,
"Matte Objects",
"List of object and material crypto IDs to include in matte");
6799 prop,
"Add",
"Add object or material to matte, by picking a color from the Pick output");
6810 "Remove object or material from matte, by picking a color from the Pick output");
6830 "Use Cryptomatte passes from a render"},
6835 "Use Cryptomatte passes from an image"},
6836 {0,
nullptr, 0,
nullptr,
nullptr}};
6847 prop,
"rna_NodeCryptomatte_scene_get",
"rna_NodeCryptomatte_scene_set",
nullptr,
nullptr);
6856 "rna_NodeCryptomatte_image_get",
6857 "rna_NodeCryptomatte_image_set",
6859 "rna_NodeCryptomatte_image_poll");
6872 "rna_NodeCryptomatte_layer_name_get",
6873 "rna_NodeCryptomatte_layer_name_set",
6874 "rna_NodeCryptomatte_layer_name_itemf");
6923 prop,
"Image User",
"Parameters defining the image duration, offset and related settings");
6935 prop,
"Offset Amount",
"Determines the brick offset of the various rows");
6950 "Factor to adjust the brick's width for particular rows determined by the Offset Frequency");
6970 "Find sample positions on the curve using a factor of its total length"},
6975 "Find sample positions on the curve using a distance from its beginning"},
6976 {0,
nullptr, 0,
nullptr,
nullptr},
6991 "Sample lengths based on the total length of all curves, rather than "
6992 "using a length inside each selected curve");
6999 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeType_type_with_socket_itemf");
7025 static const EnumPropertyItem rna_node_geometry_distribute_points_on_faces_mode_items[] = {
7030 "Distribute points randomly on the surface"},
7035 "Distribute the points randomly on the surface while taking a minimum distance between "
7036 "points into account"},
7037 {0,
nullptr, 0,
nullptr,
nullptr},
7052 "Output the normal and rotation values that have been output "
7053 "before the node started taking smooth normals into account");
7090 prop,
"Paired Output",
"Zone output node that this input node is paired with");
7092 func =
RNA_def_function(srna,
"pair_with_output",
"rna_Node_pair_with_output");
7096 func,
"output_node",
"NodeInternal",
"Output Node",
"Zone output node to pair with");
7100 func,
"result",
false,
"Result",
"True if pairing the node was successful");
7145 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
7149 "Attribute domain where the attribute is stored in the simulation state");
7152 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<SimulationItemsAccessor>");
7159 srna =
RNA_def_struct(brna,
"NodeGeometrySimulationOutputItems",
nullptr);
7164 srna,
"SimulationStateItem",
"SimulationItemsAccessor");
7193 "rna_Node_ItemArray_active_get<SimulationItemsAccessor>",
7194 "rna_Node_ItemArray_active_set<SimulationItemsAccessor>",
7215 srna =
RNA_def_struct(brna,
"NodeGeometryRepeatOutputItems",
nullptr);
7248 "rna_Node_ItemArray_active_get<RepeatItemsAccessor>",
7249 "rna_Node_ItemArray_active_set<RepeatItemsAccessor>",
7260 "Iteration index that is used by inspection features like the viewer "
7261 "node or socket inspection");
7280 prop,
"Auto Remove",
"Remove the item automatically when it is unlinked");
7282 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<GeoViewerItemsAccessor>");
7292 srna,
"NodeGeometryViewerItem",
"GeoViewerItemsAccessor");
7294 srna,
"NodeGeometryViewerItem",
"GeoViewerItemsAccessor");
7332 "rna_Node_ItemArray_active_get<GeoViewerItemsAccessor>",
7333 "rna_Node_ItemArray_active_set<GeoViewerItemsAccessor>",
7351 srna,
"ForeachGeometryElementInputItemsAccessor",
true);
7358 srna =
RNA_def_struct(brna,
"NodeGeometryForeachGeometryElementInputItems",
nullptr);
7363 srna,
"ForeachGeometryElementInputItem",
"ForeachGeometryElementInputItemsAccessor");
7365 srna,
"ForeachGeometryElementInputItem",
"ForeachGeometryElementInputItemsAccessor");
7372 srna =
RNA_def_struct(brna,
"ForeachGeometryElementMainItem",
nullptr);
7377 srna,
"ForeachGeometryElementMainItemsAccessor",
true);
7384 srna =
RNA_def_struct(brna,
"NodeGeometryForeachGeometryElementMainItems",
nullptr);
7389 srna,
"ForeachGeometryElementMainItem",
"ForeachGeometryElementMainItemsAccessor");
7391 srna,
"ForeachGeometryElementMainItem",
"ForeachGeometryElementMainItemsAccessor");
7399 srna =
RNA_def_struct(brna,
"ForeachGeometryElementGenerationItem",
nullptr);
7404 srna,
"ForeachGeometryElementGenerationItemsAccessor",
true);
7412 "rna_Node_ItemArray_item_update<ForeachGeometryElementGenerationItemsAccessor>");
7419 srna =
RNA_def_struct(brna,
"NodeGeometryForeachGeometryElementGenerationItems",
nullptr);
7425 "ForeachGeometryElementGenerationItem",
7426 "ForeachGeometryElementGenerationItemsAccessor");
7428 "ForeachGeometryElementGenerationItem",
7429 "ForeachGeometryElementGenerationItemsAccessor");
7459 prop,
nullptr,
"generation_items.items",
"generation_items.items_num");
7493 "Iteration index that is used by inspection features like the viewer "
7494 "node or socket inspection");
7515 "rna_Node_ItemArray_structure_type_itemf<ClosureInputItemsAccessor>");
7519 "What kind of higher order types are expected to flow through this socket");
7521 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<ClosureInputItemsAccessor>");
7531 srna,
"NodeClosureInputItem",
"ClosureInputItemsAccessor");
7533 srna,
"NodeClosureInputItem",
"ClosureInputItemsAccessor");
7552 "rna_Node_ItemArray_structure_type_itemf<ClosureOutputItemsAccessor>");
7556 "What kind of higher order types are expected to flow through this socket");
7558 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<ClosureOutputItemsAccessor>");
7568 srna,
"NodeClosureOutputItem",
"ClosureOutputItemsAccessor");
7570 srna,
"NodeClosureOutputItem",
"ClosureOutputItemsAccessor");
7614 "This zone defines a closure signature that should be used by other nodes");
7630 prop,
nullptr,
nullptr,
"rna_NodeGeometryCaptureAttributeItem_data_type_itemf");
7634 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<CaptureAttributeItemsAccessor>");
7644 srna,
"NodeGeometryCaptureAttributeItem",
"CaptureAttributeItemsAccessor");
7646 srna,
"NodeGeometryCaptureAttributeItem",
"CaptureAttributeItemsAccessor");
7674 "rna_Node_ItemArray_active_get<CaptureAttributeItemsAccessor>",
7675 "rna_Node_ItemArray_active_set<CaptureAttributeItemsAccessor>",
7686 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
7695 srna =
RNA_def_struct(brna,
"NodeEvaluateClosureInputItem",
nullptr);
7706 "rna_Node_ItemArray_structure_type_itemf<EvaluateClosureInputItemsAccessor>");
7710 "What kind of higher order types are expected to flow through this socket");
7713 "rna_Node_ItemArray_item_update<EvaluateClosureInputItemsAccessor>");
7720 srna =
RNA_def_struct(brna,
"NodeEvaluateClosureInputItems",
nullptr);
7725 srna,
"NodeEvaluateClosureInputItem",
"EvaluateClosureInputItemsAccessor");
7727 srna,
"NodeEvaluateClosureInputItem",
"EvaluateClosureInputItemsAccessor");
7735 srna =
RNA_def_struct(brna,
"NodeEvaluateClosureOutputItem",
nullptr);
7746 "rna_Node_ItemArray_structure_type_itemf<EvaluateClosureOutputItemsAccessor>");
7750 "What kind of higher order types are expected to flow through this socket");
7753 "rna_Node_ItemArray_item_update<EvaluateClosureOutputItemsAccessor>");
7760 srna =
RNA_def_struct(brna,
"NodeEvaluateClosureOutputItems",
nullptr);
7765 srna,
"NodeEvaluateClosureOutputItem",
"EvaluateClosureOutputItemsAccessor");
7767 srna,
"NodeEvaluateClosureOutputItem",
"EvaluateClosureOutputItemsAccessor");
7814 "This node defines a closure signature that should be used by other nodes");
7832 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
7835 "Attribute domain where the attribute is stored in the baked data");
7838 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<BakeItemsAccessor>");
7844 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<BakeItemsAccessor>");
7856 srna,
"NodeGeometryBakeItem",
"BakeItemsAccessor");
7885 "rna_Node_ItemArray_active_get<BakeItemsAccessor>",
7886 "rna_Node_ItemArray_active_set<BakeItemsAccessor>",
7910 "rna_Node_ItemArray_structure_type_itemf<CombineBundleItemsAccessor>");
7914 "What kind of higher order types are expected to flow through this socket");
7916 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<CombineBundleItemsAccessor>");
7926 srna,
"NodeCombineBundleItem",
"CombineBundleItemsAccessor");
7928 srna,
"NodeCombineBundleItem",
"CombineBundleItemsAccessor");
7958 "This node defines a bundle signature that should be used by other nodes");
7979 "rna_Node_ItemArray_structure_type_itemf<SeparateBundleItemsAccessor>");
7983 "What kind of higher order types are expected to flow through this socket");
7985 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<SeparateBundleItemsAccessor>");
7995 srna,
"NodeSeparateBundleItem",
"SeparateBundleItemsAccessor");
7997 srna,
"NodeSeparateBundleItem",
"SeparateBundleItemsAccessor");
8027 "This node defines a bundle signature that should be used by other nodes");
8062 parm =
RNA_def_pointer(func,
"item",
"IndexSwitchItem",
"Item",
"New item");
8099 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<FieldToGridItemsAccessor>");
8112 srna,
"GeometryNodeFieldToGridItem",
"FieldToGridItemsAccessor");
8114 srna,
"GeometryNodeFieldToGridItem",
"FieldToGridItemsAccessor");
8142 "rna_Node_ItemArray_active_get<FieldToGridItemsAccessor>",
8143 "rna_Node_ItemArray_active_set<FieldToGridItemsAccessor>",
8162 srna =
RNA_def_struct(brna,
"NodeFunctionFormatStringItem",
nullptr);
8172 srna =
RNA_def_struct(brna,
"NodeFunctionFormatStringItems",
nullptr);
8177 srna,
"NodeFunctionFormatStringItem",
"FormatStringItemsAccessor");
8179 srna,
"NodeFunctionFormatStringItem",
"FormatStringItemsAccessor");
8231 "Rotate around an axis by an angle"},
8236 "Rotate around the X, Y, and Z axes"},
8237 {0,
nullptr, 0,
nullptr,
nullptr},
8245 "Rotate the input rotation in the local space of the object"},
8250 "Rotate the input rotation in its local space"},
8251 {0,
nullptr, 0,
nullptr,
nullptr},
8279 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeType_type_with_socket_itemf");
8288 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
8296 "Clamp the indices to the size of the attribute domain instead of "
8297 "outputting a default value for invalid indices");
8333 "Flat Corner Normals",
8334 "Always use face normals for the face corner domain, matching old behavior of the node");
8365 static const EnumPropertyItem rna_node_geometry_string_to_curves_overflow_items[] = {
8370 "Let the text use more space than the specified height"},
8375 "Scale the text size to fit inside the width and height"},
8380 "Only output curves that fit within the width and height. Output the remainder to the "
8381 "\"Remainder\" output."},
8382 {0,
nullptr, 0,
nullptr,
nullptr},
8385 static const EnumPropertyItem rna_node_geometry_string_to_curves_align_x_items[] = {
8390 "Align text to the left"},
8395 "Align text to the center"},
8400 "Align text to the right"},
8405 "Align text to the left and the right"},
8410 "Align text to the left and the right, with equal character spacing"},
8411 {0,
nullptr, 0,
nullptr,
nullptr},
8414 static const EnumPropertyItem rna_node_geometry_string_to_curves_align_y_items[] = {
8419 "Align text to the top"},
8424 "Align text to the top line's baseline"},
8429 "Align text to the middle"},
8434 "Align text to the bottom line's baseline"},
8439 "Align text to the bottom"},
8440 {0,
nullptr, 0,
nullptr,
nullptr},
8443 static const EnumPropertyItem rna_node_geometry_string_to_curves_pivot_mode[] = {
8467 {0,
nullptr, 0,
nullptr,
nullptr},
8476 prop,
"Font",
"Font of the text. Falls back to the UI font by default.");
8488 prop,
"Textbox Overflow",
"Handle the text behavior when it does not fit in the text boxes");
8496 "Horizontal Alignment",
8497 "Text horizontal alignment from the object or text box center");
8505 prop,
"Vertical Alignment",
"Text vertical alignment from the object center");
8525 prop,
nullptr,
nullptr,
"rna_Node_ItemArray_item_name_set<MenuSwitchItemsAccessor>");
8529 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<MenuSwitchItemsAccessor>");
8535 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<MenuSwitchItemsAccessor>");
8547 srna,
"Enum Definition Items",
"Collection of items that make up an enum");
8555 parm =
RNA_def_pointer(func,
"item",
"NodeEnumItem",
"Item",
"New item");
8572 prop,
nullptr,
"enum_definition.items_array",
"enum_definition.items_num");
8586 "rna_Node_ItemArray_active_get<MenuSwitchItemsAccessor>",
8587 "rna_Node_ItemArray_active_set<MenuSwitchItemsAccessor>",
8598 prop,
"rna_NodeMenuSwitch_enum_definition_get",
nullptr,
nullptr,
nullptr);
8601 "Enum Definition (deprecated)",
8602 "The enum definition can now be accessed directly on the node. This "
8603 "exists for backward compatibility.");
8625 srna,
"rna_CompositorNode_register",
"rna_Node_unregister",
nullptr);
8628 func =
RNA_def_function(srna,
"tag_need_exec",
"rna_CompositorNode_tag_need_exec");
8683 srna =
RNA_def_struct(brna,
"NodeInternalSocketTemplate",
nullptr);
8688 "rna_NodeInternalSocketTemplate_name_get",
8689 "rna_NodeInternalSocketTemplate_name_length",
8696 "rna_NodeInternalSocketTemplate_identifier_get",
8697 "rna_NodeInternalSocketTemplate_identifier_length",
8723 func,
"If non-null output is returned, the node type can be added to the tree");
8726 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
8729 func =
RNA_def_function(srna,
"poll_instance",
"rna_NodeInternal_poll_instance");
8731 func,
"If non-null output is returned, the node can be added to the tree");
8733 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
8739 func,
"Update on node graph topology changes (adding or removing nodes and links)");
8743 func =
RNA_def_function(srna,
"draw_buttons",
"rna_NodeInternal_draw_buttons");
8754 func =
RNA_def_function(srna,
"draw_buttons_ext",
"rna_NodeInternal_draw_buttons_ext");
8770 const char *structtype = (in_out ==
SOCK_IN ?
"NodeInputs" :
"NodeOutputs");
8771 const char *uiname = (in_out ==
SOCK_IN ?
"Node Inputs" :
"Node Outputs");
8772 const char *newfunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_new" :
"rna_Node_outputs_new");
8773 const char *clearfunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_clear" :
"rna_Node_outputs_clear");
8774 const char *movefunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_move" :
"rna_Node_outputs_move");
8790 func,
"use_multi_input",
false,
"",
"Make the socket multi-input (valid for inputs only)");
8792 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"New socket");
8798 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"The socket to remove");
8809 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the socket to move", 0, 10000);
8812 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the socket", 0, 10000);
8828 "ERRORS_AND_WARNINGS",
8830 "Errors and Warnings",
8832 {0,
nullptr, 0,
nullptr,
nullptr},
8849 prop,
"Type",
"Legacy unique node type identifier, redundant with bl_idname property");
8903 "rna_NodeInputs_lookup_string",
8920 "rna_NodeOutputs_lookup_string",
8930 "rna_Node_internal_links_begin",
8931 "rna_iterator_array_next",
8932 "rna_iterator_array_end",
8933 "rna_iterator_array_get",
8940 prop,
"Internal Links",
"Internal input-to-output connections for muting");
8945 prop,
nullptr,
"rna_Node_parent_set",
nullptr,
"rna_Node_parent_poll");
8956 "Warning Propagation",
8957 "The kinds of messages that should be propagated from this node to the parent group node");
9012 func =
RNA_def_function(srna,
"socket_value_update",
"rna_Node_socket_value_update");
9018 func =
RNA_def_function(srna,
"is_registered_node_type",
"rna_Node_is_registered_node_type");
9027 prop,
"rna_Node_bl_idname_get",
"rna_Node_bl_idname_length",
"rna_Node_bl_idname_set");
9033 prop,
"rna_Node_bl_label_get",
"rna_Node_bl_label_length",
"rna_Node_bl_label_set");
9039 "rna_Node_bl_description_get",
9040 "rna_Node_bl_description_length",
9041 "rna_Node_bl_description_set");
9057 "Legacy unique node type identifier, redundant with bl_idname property");
9087 func,
"If non-null output is returned, the node type can be added to the tree");
9090 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
9095 func,
"If non-null output is returned, the node can be added to the tree");
9098 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
9104 func,
"Update on node graph topology changes (adding or removing nodes and links)");
9111 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"Link",
"Node link that will be inserted");
9124 "Initialize a new instance of this node from an existing node");
9126 parm =
RNA_def_pointer(func,
"node",
"Node",
"Node",
"Existing node to copy");
9166 "debug_zone_body_lazy_function_graph",
9167 "rna_NodeTree_debug_zone_body_lazy_function_graph");
9169 func,
"Get the internal lazy-function graph for the body of this zone");
9177 srna,
"debug_zone_lazy_function_graph",
"rna_NodeTree_debug_zone_lazy_function_graph");
9251 "Multi Input Sort ID",
9252 "Used to sort multiple links coming into the same input. The highest ID is at the top.");
9255 srna,
"swap_multi_input_sort_id",
"rna_NodeLink_swap_multi_input_sort_id");
9257 func,
"Swap the order of two links connected to the same multi-input socket");
9263 "The other link. Must link to the same multi-input socket.");
9290 "Type of node to add (Warning: should be same as node.bl_idname, not node.type!)");
9299 parm =
RNA_def_pointer(func,
"node",
"Node",
"",
"The node to remove");
9310 prop,
"rna_NodeTree_active_node_get",
"rna_NodeTree_active_node_set",
nullptr,
nullptr);
9330 parm =
RNA_def_pointer(func,
"input",
"NodeSocket",
"",
"The input socket");
9332 parm =
RNA_def_pointer(func,
"output",
"NodeSocket",
"",
"The output socket");
9338 "Remove existing links if connection limit is exceeded");
9340 "handle_dynamic_sockets",
9342 "Handle Dynamic Sockets",
9343 "Handle node specific features like virtual sockets");
9345 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"",
"New node link");
9351 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"",
"The node link to remove");
9372 "Undefined type of nodes (can happen e.g. when a linked node tree goes missing)"},
9373 {
NTREE_CUSTOM,
"CUSTOM", ICON_NONE,
"Custom",
"Custom nodes"},
9374 {
NTREE_SHADER,
"SHADER", ICON_MATERIAL,
"Shader",
"Shader nodes"},
9375 {
NTREE_TEXTURE,
"TEXTURE", ICON_TEXTURE,
"Texture",
"Texture nodes"},
9376 {
NTREE_COMPOSIT,
"COMPOSITING", ICON_RENDERLAYERS,
"Compositing",
"Compositing nodes"},
9377 {
NTREE_GEOMETRY,
"GEOMETRY", ICON_GEOMETRY_NODES,
"Geometry",
"Geometry nodes"},
9378 {0,
nullptr, 0,
nullptr,
nullptr},
9385 "Node tree consisting of linked nodes used for shading, textures and compositing");
9395 prop,
"Color Tag",
"Color tag of the node group which influences the header color");
9402 prop,
"Default Group Node Width",
"The width for newly created group nodes");
9409 prop,
"",
"The current location (offset) of the view for this Node Tree");
9438 prop,
nullptr,
nullptr,
nullptr,
"rna_GPencil_datablocks_annotations_poll");
9450 "Node Tree type (deprecated, bl_idname is the actual node tree type identifier)");
9458 func =
RNA_def_function(srna,
"interface_update",
"rna_NodeTree_interface_update");
9463 func =
RNA_def_function(srna,
"contains_tree",
"rna_NodeTree_contains_tree");
9466 "Check if the node tree contains another. Used to avoid creating recursive node groups.");
9468 func,
"sub_tree",
"NodeTree",
"Node Tree",
"Node tree for recursive check");
9476 "rna_NodeTree_bl_idname_get",
9477 "rna_NodeTree_bl_idname_length",
9478 "rna_NodeTree_bl_idname_set");
9484 "rna_NodeTree_bl_label_get",
9485 "rna_NodeTree_bl_label_length",
9486 "rna_NodeTree_bl_label_set");
9492 "rna_NodeTree_bl_description_get",
9493 "rna_NodeTree_bl_description_length",
9494 "rna_NodeTree_bl_description_set");
9509 "Use Group Interface",
9510 "Determines the visibility of some UI elements related to node groups");
9532 func,
"result_1",
"NodeTree",
"Node Tree",
"Active node tree from context");
9535 func,
"result_2",
"ID",
"Owner ID",
"ID data-block that owns the node tree");
9538 func,
"result_3",
"ID",
"From ID",
"Original ID data-block selected from the context");
9546 func,
"idname",
"NodeSocket",
MAX_NAME,
"Socket Type",
"Identifier of the socket type");
9551 srna,
"debug_lazy_function_graph",
"rna_NodeTree_debug_lazy_function_graph");
9567 srna,
"Compositor Node Tree",
"Node tree consisting of linked nodes used for compositing");
9574 prop,
"Viewer Region",
"Use boundaries for viewer nodes and composite backdrop");
9588 "Node tree consisting of linked nodes used for materials (and other shading data-blocks)");
9594 "Return active shader output node for the specified target");
9608 srna,
"Texture Node Tree",
"Node tree consisting of linked nodes used for textures");
9620 srna,
"Geometry Node Tree",
"Node tree consisting of linked nodes used for geometries");
9628 prop,
"rna_GeometryNodeTree_is_tool_get",
"rna_GeometryNodeTree_is_tool_set");
9635 prop,
"rna_GeometryNodeTree_is_modifier_get",
"rna_GeometryNodeTree_is_modifier_set");
9642 prop,
"rna_GeometryNodeTree_is_mode_object_get",
"rna_GeometryNodeTree_is_mode_object_set");
9649 prop,
"rna_GeometryNodeTree_is_mode_edit_get",
"rna_GeometryNodeTree_is_mode_edit_set");
9656 prop,
"rna_GeometryNodeTree_is_mode_sculpt_get",
"rna_GeometryNodeTree_is_mode_sculpt_set");
9663 prop,
"rna_GeometryNodeTree_is_mode_paint_get",
"rna_GeometryNodeTree_is_mode_paint_set");
9670 prop,
"rna_GeometryNodeTree_is_type_mesh_get",
"rna_GeometryNodeTree_is_type_mesh_set");
9677 prop,
"rna_GeometryNodeTree_is_type_curve_get",
"rna_GeometryNodeTree_is_type_curve_set");
9684 "rna_GeometryNodeTree_is_type_pointcloud_get",
9685 "rna_GeometryNodeTree_is_type_pointcloud_set");
9692 "Wait for mouse click input before running the operator from a menu");
9694 "rna_GeometryNodeTree_use_wait_for_click_get",
9695 "rna_GeometryNodeTree_use_wait_for_click_set");
9702 "rna_GeometryNodeTree_is_type_grease_pencil_get",
9703 "rna_GeometryNodeTree_is_type_grease_pencil_set");
9708 "rna_GeometryNodeTree_modifier_manage_panel_get",
9709 "rna_GeometryNodeTree_modifier_manage_panel_set");
9714 "Show Manage Panel",
9715 "Turn on the option to display the manage panel when creating a modifier");
9720 const char *struct_name,
9721 const char *base_name)
9730 func =
RNA_def_function(srna,
"is_registered_node_type",
"rna_Node_is_registered_node_type");
9739 func =
RNA_def_function(srna,
"input_template",
"rna_NodeInternal_input_template");
9750 func =
RNA_def_function(srna,
"output_template",
"rna_NodeInternal_output_template");
9779 const auto define = [&](
const char *base_name,
9780 const char *struct_name,
9795 define(
"NodeInternal",
"NodeFrame",
def_frame);
9796 define(
"NodeInternal",
"NodeGroup",
def_group);
9799 define(
"NodeInternal",
"NodeReroute",
def_reroute);
9804 define(
"NodeInternal",
"NodeEnableOutput");
9806 define(
"NodeInternal",
"NodeJoinBundle");
9809 define(
"ShaderNode",
"ShaderNodeAddShader");
9812 define(
"ShaderNode",
"ShaderNodeBackground");
9814 define(
"ShaderNode",
"ShaderNodeBlackbody");
9815 define(
"ShaderNode",
"ShaderNodeBrightContrast");
9816 define(
"ShaderNode",
"ShaderNodeBsdfAnisotropic",
def_glossy);
9817 define(
"ShaderNode",
"ShaderNodeBsdfDiffuse");
9818 define(
"ShaderNode",
"ShaderNodeBsdfGlass",
def_glass);
9819 define(
"ShaderNode",
"ShaderNodeBsdfHair",
def_hair);
9821 define(
"ShaderNode",
"ShaderNodeBsdfMetallic",
def_metallic);
9822 define(
"ShaderNode",
"ShaderNodeBsdfPrincipled",
def_principled);
9823 define(
"ShaderNode",
"ShaderNodeBsdfRayPortal");
9824 define(
"ShaderNode",
"ShaderNodeBsdfRefraction",
def_refraction);
9825 define(
"ShaderNode",
"ShaderNodeBsdfSheen",
def_sheen);
9826 define(
"ShaderNode",
"ShaderNodeBsdfToon",
def_toon);
9827 define(
"ShaderNode",
"ShaderNodeBsdfTranslucent");
9828 define(
"ShaderNode",
"ShaderNodeBsdfTransparent");
9829 define(
"ShaderNode",
"ShaderNodeBump",
def_sh_bump);
9830 define(
"ShaderNode",
"ShaderNodeCameraData");
9831 define(
"ShaderNode",
"ShaderNodeClamp",
def_clamp);
9833 define(
"ShaderNode",
"ShaderNodeCombineXYZ");
9835 define(
"ShaderNode",
"ShaderNodeEeveeSpecular");
9836 define(
"ShaderNode",
"ShaderNodeEmission");
9838 define(
"ShaderNode",
"ShaderNodeFresnel");
9839 define(
"ShaderNode",
"ShaderNodeGamma");
9840 define(
"ShaderNode",
"ShaderNodeHairInfo");
9841 define(
"ShaderNode",
"ShaderNodeHoldout");
9842 define(
"ShaderNode",
"ShaderNodeHueSaturation");
9843 define(
"ShaderNode",
"ShaderNodeInvert");
9844 define(
"ShaderNode",
"ShaderNodeLayerWeight");
9845 define(
"ShaderNode",
"ShaderNodeLightFalloff");
9846 define(
"ShaderNode",
"ShaderNodeLightPath");
9849 define(
"ShaderNode",
"ShaderNodeMath",
def_math);
9850 define(
"ShaderNode",
"ShaderNodeMix",
def_sh_mix);
9851 define(
"ShaderNode",
"ShaderNodeMixRGB",
def_mix_rgb);
9852 define(
"ShaderNode",
"ShaderNodeMixShader");
9853 define(
"ShaderNode",
"ShaderNodeNewGeometry");
9854 define(
"ShaderNode",
"ShaderNodeNormal");
9856 define(
"ShaderNode",
"ShaderNodeObjectInfo");
9858 define(
"ShaderNode",
"ShaderNodeOutputLight",
def_sh_output);
9860 define(
"ShaderNode",
"ShaderNodeOutputMaterial",
def_sh_output);
9861 define(
"ShaderNode",
"ShaderNodeOutputWorld",
def_sh_output);
9862 define(
"ShaderNode",
"ShaderNodeParticleInfo");
9863 define(
"ShaderNode",
"ShaderNodePointInfo");
9865 define(
"ShaderNode",
"ShaderNodeRGB");
9867 define(
"ShaderNode",
"ShaderNodeRGBToBW");
9870 define(
"ShaderNode",
"ShaderNodeSeparateXYZ");
9871 define(
"ShaderNode",
"ShaderNodeShaderToRGB");
9872 define(
"ShaderNode",
"ShaderNodeSqueeze");
9892 define(
"ShaderNode",
"ShaderNodeValue");
9899 define(
"ShaderNode",
"ShaderNodeVolumeAbsorption");
9900 define(
"ShaderNode",
"ShaderNodeVolumeInfo");
9901 define(
"ShaderNode",
"ShaderNodeVolumePrincipled");
9902 define(
"ShaderNode",
"ShaderNodeVolumeScatter",
def_scatter);
9904 define(
"ShaderNode",
"ShaderNodeWavelength");
9907 define(
"CompositorNode",
"CompositorNodeAlphaOver");
9908 define(
"CompositorNode",
"CompositorNodeAntiAliasing");
9909 define(
"CompositorNode",
"CompositorNodeBilateralblur");
9910 define(
"CompositorNode",
"CompositorNodeBlur");
9911 define(
"CompositorNode",
"CompositorNodeBokehBlur");
9912 define(
"CompositorNode",
"CompositorNodeBokehImage");
9913 define(
"CompositorNode",
"CompositorNodeBoxMask");
9914 define(
"CompositorNode",
"CompositorNodeBrightContrast");
9915 define(
"CompositorNode",
"CompositorNodeChannelMatte");
9916 define(
"CompositorNode",
"CompositorNodeChromaMatte");
9918 define(
"CompositorNode",
"CompositorNodeColorCorrection");
9919 define(
"CompositorNode",
"CompositorNodeColorMatte");
9920 define(
"CompositorNode",
"CompositorNodeColorSpill");
9921 define(
"CompositorNode",
"CompositorNodeConvolve");
9925 define(
"CompositorNode",
"CompositorNodeCornerPin");
9926 define(
"CompositorNode",
"CompositorNodeCrop");
9929 define(
"CompositorNode",
"CompositorNodeCurveRGB",
def_rgb_curve);
9930 define(
"CompositorNode",
"CompositorNodeDBlur");
9932 define(
"CompositorNode",
"CompositorNodeDenoise");
9933 define(
"CompositorNode",
"CompositorNodeDespeckle");
9934 define(
"CompositorNode",
"CompositorNodeDiffMatte");
9935 define(
"CompositorNode",
"CompositorNodeDilateErode");
9936 define(
"CompositorNode",
"CompositorNodeDisplace");
9937 define(
"CompositorNode",
"CompositorNodeDistanceMatte");
9938 define(
"CompositorNode",
"CompositorNodeDoubleEdgeMask");
9939 define(
"CompositorNode",
"CompositorNodeEllipseMask");
9940 define(
"CompositorNode",
"CompositorNodeExposure");
9941 define(
"CompositorNode",
"CompositorNodeFilter");
9942 define(
"CompositorNode",
"CompositorNodeFlip");
9943 define(
"CompositorNode",
"CompositorNodeGamma");
9944 define(
"CompositorNode",
"CompositorNodeGlare");
9946 define(
"CompositorNode",
"CompositorNodeHueSat");
9947 define(
"CompositorNode",
"CompositorNodeIDMask");
9948 define(
"CompositorNode",
"CompositorNodeImage",
def_cmp_image);
9949 define(
"CompositorNode",
"CompositorNodeImageCoordinates");
9950 define(
"CompositorNode",
"CompositorNodeImageInfo");
9951 define(
"CompositorNode",
"CompositorNodeInpaint");
9952 define(
"CompositorNode",
"CompositorNodeInvert");
9953 define(
"CompositorNode",
"CompositorNodeKeying");
9955 define(
"CompositorNode",
"CompositorNodeKuwahara");
9956 define(
"CompositorNode",
"CompositorNodeLensdist");
9957 define(
"CompositorNode",
"CompositorNodeLevels");
9958 define(
"CompositorNode",
"CompositorNodeLumaMatte");
9959 define(
"CompositorNode",
"CompositorNodeMapUV");
9960 define(
"CompositorNode",
"CompositorNodeMask",
def_cmp_mask);
9963 define(
"CompositorNode",
"CompositorNodeNormal");
9964 define(
"CompositorNode",
"CompositorNodeNormalize");
9966 define(
"CompositorNode",
"CompositorNodePixelate");
9968 define(
"CompositorNode",
"CompositorNodePosterize");
9969 define(
"CompositorNode",
"CompositorNodePremulKey");
9970 define(
"CompositorNode",
"CompositorNodeRelativeToPixel");
9971 define(
"CompositorNode",
"CompositorNodeRGB");
9972 define(
"CompositorNode",
"CompositorNodeRGBToBW");
9974 define(
"CompositorNode",
"CompositorNodeRotate");
9975 define(
"CompositorNode",
"CompositorNodeScale");
9976 define(
"CompositorNode",
"CompositorNodeSceneTime");
9978 define(
"CompositorNode",
"CompositorNodeSetAlpha");
9979 define(
"CompositorNode",
"CompositorNodeSplit");
9981 define(
"CompositorNode",
"CompositorNodeSwitch");
9982 define(
"CompositorNode",
"CompositorNodeSwitchView");
9983 define(
"CompositorNode",
"CompositorNodeTime",
def_time);
9984 define(
"CompositorNode",
"CompositorNodeTonemap");
9986 define(
"CompositorNode",
"CompositorNodeTransform");
9987 define(
"CompositorNode",
"CompositorNodeTranslate");
9988 define(
"CompositorNode",
"CompositorNodeVecBlur");
9989 define(
"CompositorNode",
"CompositorNodeViewer",
def_cmp_viewer);
9990 define(
"CompositorNode",
"CompositorNodeZcombine");
9992 define(
"TextureNode",
"TextureNodeAt");
9994 define(
"TextureNode",
"TextureNodeChecker");
9996 define(
"TextureNode",
"TextureNodeCompose");
9997 define(
"TextureNode",
"TextureNodeCoordinates");
9998 define(
"TextureNode",
"TextureNodeCurveRGB",
def_rgb_curve);
9999 define(
"TextureNode",
"TextureNodeCurveTime",
def_time);
10000 define(
"TextureNode",
"TextureNodeDecompose");
10001 define(
"TextureNode",
"TextureNodeDistance");
10002 define(
"TextureNode",
"TextureNodeHueSaturation");
10004 define(
"TextureNode",
"TextureNodeInvert");
10005 define(
"TextureNode",
"TextureNodeMath",
def_math);
10006 define(
"TextureNode",
"TextureNodeMixRGB",
def_mix_rgb);
10008 define(
"TextureNode",
"TextureNodeRGBToBW");
10009 define(
"TextureNode",
"TextureNodeRotate");
10010 define(
"TextureNode",
"TextureNodeScale");
10012 define(
"TextureNode",
"TextureNodeTexBlend");
10013 define(
"TextureNode",
"TextureNodeTexClouds");
10014 define(
"TextureNode",
"TextureNodeTexDistNoise");
10015 define(
"TextureNode",
"TextureNodeTexMagic");
10016 define(
"TextureNode",
"TextureNodeTexMarble");
10017 define(
"TextureNode",
"TextureNodeTexMusgrave");
10018 define(
"TextureNode",
"TextureNodeTexNoise");
10019 define(
"TextureNode",
"TextureNodeTexStucci");
10020 define(
"TextureNode",
"TextureNodeTexture",
def_texture);
10021 define(
"TextureNode",
"TextureNodeTexVoronoi");
10022 define(
"TextureNode",
"TextureNodeTexWood");
10023 define(
"TextureNode",
"TextureNodeTranslate");
10024 define(
"TextureNode",
"TextureNodeValToNor");
10025 define(
"TextureNode",
"TextureNodeValToRGB",
def_colorramp);
10026 define(
"TextureNode",
"TextureNodeViewer");
10028 define(
"FunctionNode",
"FunctionNodeAlignEulerToVector");
10029 define(
"FunctionNode",
"FunctionNodeAlignRotationToVector");
10030 define(
"FunctionNode",
"FunctionNodeAxesToRotation");
10031 define(
"FunctionNode",
"FunctionNodeAxisAngleToRotation");
10032 define(
"FunctionNode",
"FunctionNodeBitMath");
10033 define(
"FunctionNode",
"FunctionNodeBooleanMath");
10034 define(
"FunctionNode",
"FunctionNodeCombineColor");
10035 define(
"FunctionNode",
"FunctionNodeCombineMatrix");
10036 define(
"FunctionNode",
"FunctionNodeCombineTransform");
10037 define(
"FunctionNode",
"FunctionNodeCompare");
10038 define(
"FunctionNode",
"FunctionNodeEulerToRotation");
10039 define(
"FunctionNode",
"FunctionNodeFindInString");
10042 define(
"FunctionNode",
"FunctionNodeHashValue");
10047 define(
"FunctionNode",
"FunctionNodeInputSpecialCharacters");
10050 define(
"FunctionNode",
"FunctionNodeIntegerMath");
10051 define(
"FunctionNode",
"FunctionNodeInvertMatrix");
10052 define(
"FunctionNode",
"FunctionNodeInvertRotation");
10053 define(
"FunctionNode",
"FunctionNodeMatchString");
10054 define(
"FunctionNode",
"FunctionNodeMatrixDeterminant");
10055 define(
"FunctionNode",
"FunctionNodeMatrixMultiply");
10056 define(
"FunctionNode",
"FunctionNodeProjectPoint");
10057 define(
"FunctionNode",
"FunctionNodeQuaternionToRotation");
10059 define(
"FunctionNode",
"FunctionNodeReplaceString");
10061 define(
"FunctionNode",
"FunctionNodeRotateRotation");
10062 define(
"FunctionNode",
"FunctionNodeRotateVector");
10063 define(
"FunctionNode",
"FunctionNodeRotationToAxisAngle");
10064 define(
"FunctionNode",
"FunctionNodeRotationToEuler");
10065 define(
"FunctionNode",
"FunctionNodeRotationToQuaternion");
10066 define(
"FunctionNode",
"FunctionNodeSeparateColor");
10067 define(
"FunctionNode",
"FunctionNodeSeparateMatrix");
10068 define(
"FunctionNode",
"FunctionNodeSeparateTransform");
10069 define(
"FunctionNode",
"FunctionNodeSliceString");
10070 define(
"FunctionNode",
"FunctionNodeStringLength");
10071 define(
"FunctionNode",
"FunctionNodeStringToValue");
10072 define(
"FunctionNode",
"FunctionNodeTransformDirection");
10073 define(
"FunctionNode",
"FunctionNodeTransformPoint");
10074 define(
"FunctionNode",
"FunctionNodeTransposeMatrix");
10075 define(
"FunctionNode",
"FunctionNodeValueToString");
10077 define(
"GeometryNode",
"GeometryNodeAccumulateField");
10078 define(
"GeometryNode",
"GeometryNodeAttributeDomainSize");
10079 define(
"GeometryNode",
"GeometryNodeAttributeStatistic");
10081 define(
"GeometryNode",
"GeometryNodeBlurAttribute");
10082 define(
"GeometryNode",
"GeometryNodeBoundBox");
10083 define(
"GeometryNode",
"GeometryNodeCameraInfo");
10086 define(
"GeometryNode",
"GeometryNodeCollectionInfo");
10087 define(
"GeometryNode",
"GeometryNodeConvexHull");
10088 define(
"GeometryNode",
"GeometryNodeCornersOfEdge");
10089 define(
"GeometryNode",
"GeometryNodeCornersOfFace");
10090 define(
"GeometryNode",
"GeometryNodeCornersOfVertex");
10091 define(
"GeometryNode",
"GeometryNodeCurveArc");
10092 define(
"GeometryNode",
"GeometryNodeCurveEndpointSelection");
10094 define(
"GeometryNode",
"GeometryNodeCurveLength");
10095 define(
"GeometryNode",
"GeometryNodeCurveOfPoint");
10096 define(
"GeometryNode",
"GeometryNodeCurvePrimitiveBezierSegment");
10097 define(
"GeometryNode",
"GeometryNodeCurvePrimitiveCircle");
10098 define(
"GeometryNode",
"GeometryNodeCurvePrimitiveLine");
10099 define(
"GeometryNode",
"GeometryNodeCurvePrimitiveQuadrilateral");
10100 define(
"GeometryNode",
"GeometryNodeCurveQuadraticBezier");
10102 define(
"GeometryNode",
"GeometryNodeCurveSpiral");
10103 define(
"GeometryNode",
"GeometryNodeCurveSplineType");
10104 define(
"GeometryNode",
"GeometryNodeCurveStar");
10105 define(
"GeometryNode",
"GeometryNodeCurvesToGreasePencil");
10106 define(
"GeometryNode",
"GeometryNodeCurveToMesh");
10107 define(
"GeometryNode",
"GeometryNodeCurveToPoints");
10108 define(
"GeometryNode",
"GeometryNodeDeformCurvesOnSurface");
10109 define(
"GeometryNode",
"GeometryNodeDeleteGeometry");
10110 define(
"GeometryNode",
"GeometryNodeDistributePointsInGrid");
10111 define(
"GeometryNode",
"GeometryNodeDistributePointsInVolume");
10113 define(
"GeometryNode",
"GeometryNodeDualMesh");
10114 define(
"GeometryNode",
"GeometryNodeDuplicateElements");
10115 define(
"GeometryNode",
"GeometryNodeEdgePathsToCurves");
10116 define(
"GeometryNode",
"GeometryNodeEdgePathsToSelection");
10117 define(
"GeometryNode",
"GeometryNodeEdgesOfCorner");
10118 define(
"GeometryNode",
"GeometryNodeEdgesOfVertex");
10119 define(
"GeometryNode",
"GeometryNodeEdgesToFaceGroups");
10120 define(
"GeometryNode",
"GeometryNodeExtrudeMesh");
10121 define(
"GeometryNode",
"GeometryNodeFaceOfCorner");
10122 define(
"GeometryNode",
"GeometryNodeFieldAtIndex");
10123 define(
"GeometryNode",
"GeometryNodeFieldAverage");
10124 define(
"GeometryNode",
"GeometryNodeFieldMinAndMax");
10125 define(
"GeometryNode",
"GeometryNodeFieldOnDomain");
10127 define(
"GeometryNode",
"GeometryNodeFieldVariance");
10128 define(
"GeometryNode",
"GeometryNodeFillCurve");
10129 define(
"GeometryNode",
"GeometryNodeFilletCurve");
10130 define(
"GeometryNode",
"GeometryNodeFlipFaces");
10133 define(
"GeometryNode",
"GeometryNodeGeometryToInstance");
10134 define(
"GeometryNode",
"GeometryNodeGetNamedGrid");
10135 define(
"GeometryNode",
"GeometryNodeGizmoDial");
10136 define(
"GeometryNode",
"GeometryNodeGizmoLinear");
10138 define(
"GeometryNode",
"GeometryNodeGreasePencilToCurves");
10139 define(
"GeometryNode",
"GeometryNodeGridAdvect");
10140 define(
"GeometryNode",
"GeometryNodeGridCurl");
10141 define(
"GeometryNode",
"GeometryNodeGridDivergence");
10142 define(
"GeometryNode",
"GeometryNodeGridGradient");
10143 define(
"GeometryNode",
"GeometryNodeGridInfo");
10144 define(
"GeometryNode",
"GeometryNodeGridLaplacian");
10145 define(
"GeometryNode",
"GeometryNodeGridPrune");
10146 define(
"GeometryNode",
"GeometryNodeGridToMesh");
10147 define(
"GeometryNode",
"GeometryNodeGridVoxelize");
10148 define(
"GeometryNode",
"GeometryNodeImageInfo");
10150 define(
"GeometryNode",
"GeometryNodeImportCSV");
10151 define(
"GeometryNode",
"GeometryNodeImportOBJ");
10152 define(
"GeometryNode",
"GeometryNodeImportPLY");
10153 define(
"GeometryNode",
"GeometryNodeImportSTL");
10154 define(
"GeometryNode",
"GeometryNodeImportText");
10155 define(
"GeometryNode",
"GeometryNodeImportVDB");
10156 define(
"GeometryNode",
"GeometryNodeIndexOfNearest");
10158 define(
"GeometryNode",
"GeometryNodeInputActiveCamera");
10160 define(
"GeometryNode",
"GeometryNodeInputCurveHandlePositions");
10161 define(
"GeometryNode",
"GeometryNodeInputCurveTilt");
10162 define(
"GeometryNode",
"GeometryNodeInputEdgeSmooth");
10163 define(
"GeometryNode",
"GeometryNodeInputID");
10164 define(
"GeometryNode",
"GeometryNodeInputImage",
def_geo_image);
10165 define(
"GeometryNode",
"GeometryNodeInputIndex");
10166 define(
"GeometryNode",
"GeometryNodeInputInstanceBounds");
10167 define(
"GeometryNode",
"GeometryNodeInputInstanceRotation");
10168 define(
"GeometryNode",
"GeometryNodeInputInstanceScale");
10170 define(
"GeometryNode",
"GeometryNodeInputMaterialIndex");
10171 define(
"GeometryNode",
"GeometryNodeInputMeshEdgeAngle");
10172 define(
"GeometryNode",
"GeometryNodeInputMeshEdgeNeighbors");
10173 define(
"GeometryNode",
"GeometryNodeInputMeshEdgeVertices");
10174 define(
"GeometryNode",
"GeometryNodeInputMeshFaceArea");
10175 define(
"GeometryNode",
"GeometryNodeInputMeshFaceIsPlanar");
10176 define(
"GeometryNode",
"GeometryNodeInputMeshFaceNeighbors");
10177 define(
"GeometryNode",
"GeometryNodeInputMeshIsland");
10178 define(
"GeometryNode",
"GeometryNodeInputMeshVertexNeighbors");
10179 define(
"GeometryNode",
"GeometryNodeInputNamedAttribute");
10180 define(
"GeometryNode",
"GeometryNodeInputNamedLayerSelection");
10183 define(
"GeometryNode",
"GeometryNodeInputPosition");
10184 define(
"GeometryNode",
"GeometryNodeInputRadius");
10185 define(
"GeometryNode",
"GeometryNodeInputSceneTime");
10186 define(
"GeometryNode",
"GeometryNodeInputShadeSmooth");
10187 define(
"GeometryNode",
"GeometryNodeInputShortestEdgePaths");
10188 define(
"GeometryNode",
"GeometryNodeInputSplineCyclic");
10189 define(
"GeometryNode",
"GeometryNodeInputSplineResolution");
10190 define(
"GeometryNode",
"GeometryNodeInputTangent");
10191 define(
"GeometryNode",
"GeometryNodeInputVoxelIndex");
10192 define(
"GeometryNode",
"GeometryNodeInstanceOnPoints");
10193 define(
"GeometryNode",
"GeometryNodeInstancesToPoints");
10194 define(
"GeometryNode",
"GeometryNodeInstanceTransform");
10195 define(
"GeometryNode",
"GeometryNodeInterpolateCurves");
10196 define(
"GeometryNode",
"GeometryNodeIsViewport");
10197 define(
"GeometryNode",
"GeometryNodeJoinGeometry");
10198 define(
"GeometryNode",
"GeometryNodeList");
10199 define(
"GeometryNode",
"GeometryNodeListGetItem");
10200 define(
"GeometryNode",
"GeometryNodeListLength");
10201 define(
"GeometryNode",
"GeometryNodeMaterialSelection");
10203 define(
"GeometryNode",
"GeometryNodeMergeByDistance");
10204 define(
"GeometryNode",
"GeometryNodeMergeLayers");
10205 define(
"GeometryNode",
"GeometryNodeMeshBoolean");
10206 define(
"GeometryNode",
"GeometryNodeMeshCircle");
10207 define(
"GeometryNode",
"GeometryNodeMeshCone");
10208 define(
"GeometryNode",
"GeometryNodeMeshCube");
10209 define(
"GeometryNode",
"GeometryNodeMeshCylinder");
10210 define(
"GeometryNode",
"GeometryNodeMeshFaceSetBoundaries");
10211 define(
"GeometryNode",
"GeometryNodeMeshGrid");
10212 define(
"GeometryNode",
"GeometryNodeMeshIcoSphere");
10213 define(
"GeometryNode",
"GeometryNodeMeshLine");
10214 define(
"GeometryNode",
"GeometryNodeMeshToCurve");
10215 define(
"GeometryNode",
"GeometryNodeMeshToDensityGrid");
10216 define(
"GeometryNode",
"GeometryNodeMeshToPoints");
10217 define(
"GeometryNode",
"GeometryNodeMeshToSDFGrid");
10218 define(
"GeometryNode",
"GeometryNodeMeshToVolume");
10219 define(
"GeometryNode",
"GeometryNodeMeshUVSphere");
10220 define(
"GeometryNode",
"GeometryNodeObjectInfo");
10221 define(
"GeometryNode",
"GeometryNodeOffsetCornerInFace");
10222 define(
"GeometryNode",
"GeometryNodeOffsetPointInCurve");
10223 define(
"GeometryNode",
"GeometryNodePoints");
10224 define(
"GeometryNode",
"GeometryNodePointsOfCurve");
10225 define(
"GeometryNode",
"GeometryNodePointsToCurves");
10226 define(
"GeometryNode",
"GeometryNodePointsToSDFGrid");
10227 define(
"GeometryNode",
"GeometryNodePointsToVertices");
10228 define(
"GeometryNode",
"GeometryNodePointsToVolume");
10229 define(
"GeometryNode",
"GeometryNodeProximity");
10230 define(
"GeometryNode",
"GeometryNodeRaycast");
10231 define(
"GeometryNode",
"GeometryNodeRealizeInstances");
10232 define(
"GeometryNode",
"GeometryNodeRemoveAttribute");
10235 define(
"GeometryNode",
"GeometryNodeReplaceMaterial");
10236 define(
"GeometryNode",
"GeometryNodeResampleCurve");
10237 define(
"GeometryNode",
"GeometryNodeReverseCurve");
10238 define(
"GeometryNode",
"GeometryNodeRotateInstances");
10240 define(
"GeometryNode",
"GeometryNodeSampleGrid");
10241 define(
"GeometryNode",
"GeometryNodeSampleGridIndex");
10243 define(
"GeometryNode",
"GeometryNodeSampleNearest");
10244 define(
"GeometryNode",
"GeometryNodeSampleNearestSurface");
10245 define(
"GeometryNode",
"GeometryNodeSampleUVSurface");
10246 define(
"GeometryNode",
"GeometryNodeScaleElements");
10247 define(
"GeometryNode",
"GeometryNodeScaleInstances");
10248 define(
"GeometryNode",
"GeometryNodeSDFGridBoolean");
10249 define(
"GeometryNode",
"GeometryNodeSDFGridFillet");
10250 define(
"GeometryNode",
"GeometryNodeSDFGridLaplacian");
10251 define(
"GeometryNode",
"GeometryNodeSDFGridMean");
10252 define(
"GeometryNode",
"GeometryNodeSDFGridMeanCurvature");
10253 define(
"GeometryNode",
"GeometryNodeSDFGridMedian");
10254 define(
"GeometryNode",
"GeometryNodeSDFGridOffset");
10255 define(
"GeometryNode",
"GeometryNodeSelfObject");
10256 define(
"GeometryNode",
"GeometryNodeSeparateComponents");
10257 define(
"GeometryNode",
"GeometryNodeSeparateGeometry");
10258 define(
"GeometryNode",
"GeometryNodeSetCurveHandlePositions");
10259 define(
"GeometryNode",
"GeometryNodeSetCurveNormal");
10260 define(
"GeometryNode",
"GeometryNodeSetCurveRadius");
10261 define(
"GeometryNode",
"GeometryNodeSetCurveTilt");
10262 define(
"GeometryNode",
"GeometryNodeSetGeometryName");
10263 define(
"GeometryNode",
"GeometryNodeSetGreasePencilColor");
10264 define(
"GeometryNode",
"GeometryNodeSetGreasePencilDepth");
10265 define(
"GeometryNode",
"GeometryNodeSetGreasePencilSoftness");
10266 define(
"GeometryNode",
"GeometryNodeSetGridBackground");
10267 define(
"GeometryNode",
"GeometryNodeSetGridTransform");
10268 define(
"GeometryNode",
"GeometryNodeSetID");
10269 define(
"GeometryNode",
"GeometryNodeSetInstanceTransform");
10270 define(
"GeometryNode",
"GeometryNodeSetMaterial");
10271 define(
"GeometryNode",
"GeometryNodeSetMaterialIndex");
10272 define(
"GeometryNode",
"GeometryNodeSetMeshNormal");
10273 define(
"GeometryNode",
"GeometryNodeSetPointRadius");
10274 define(
"GeometryNode",
"GeometryNodeSetPosition");
10275 define(
"GeometryNode",
"GeometryNodeSetShadeSmooth");
10276 define(
"GeometryNode",
"GeometryNodeSetSplineCyclic");
10277 define(
"GeometryNode",
"GeometryNodeSetSplineResolution");
10280 define(
"GeometryNode",
"GeometryNodeSortElements");
10281 define(
"GeometryNode",
"GeometryNodeSplineLength");
10282 define(
"GeometryNode",
"GeometryNodeSplineParameter");
10283 define(
"GeometryNode",
"GeometryNodeSplitEdges");
10284 define(
"GeometryNode",
"GeometryNodeSplitToInstances");
10285 define(
"GeometryNode",
"GeometryNodeStoreNamedAttribute");
10286 define(
"GeometryNode",
"GeometryNodeStoreNamedGrid");
10287 define(
"GeometryNode",
"GeometryNodeStringJoin");
10289 define(
"GeometryNode",
"GeometryNodeSubdivideCurve");
10290 define(
"GeometryNode",
"GeometryNodeSubdivideMesh");
10291 define(
"GeometryNode",
"GeometryNodeSubdivisionSurface");
10292 define(
"GeometryNode",
"GeometryNodeSwitch");
10293 define(
"GeometryNode",
"GeometryNodeTool3DCursor");
10294 define(
"GeometryNode",
"GeometryNodeToolActiveElement");
10295 define(
"GeometryNode",
"GeometryNodeToolFaceSet");
10296 define(
"GeometryNode",
"GeometryNodeToolMousePosition");
10297 define(
"GeometryNode",
"GeometryNodeToolSelection");
10298 define(
"GeometryNode",
"GeometryNodeToolSetFaceSet");
10299 define(
"GeometryNode",
"GeometryNodeToolSetSelection");
10300 define(
"GeometryNode",
"GeometryNodeTransform");
10301 define(
"GeometryNode",
"GeometryNodeTranslateInstances");
10302 define(
"GeometryNode",
"GeometryNodeTriangulate");
10303 define(
"GeometryNode",
"GeometryNodeTrimCurve");
10304 define(
"GeometryNode",
"GeometryNodeUVPackIslands");
10305 define(
"GeometryNode",
"GeometryNodeUVTangent");
10306 define(
"GeometryNode",
"GeometryNodeUVUnwrap");
10307 define(
"GeometryNode",
"GeometryNodeVertexOfCorner");
10309 define(
"GeometryNode",
"GeometryNodeViewportTransform");
10310 define(
"GeometryNode",
"GeometryNodeVolumeCube");
10311 define(
"GeometryNode",
"GeometryNodeVolumeToMesh");
10312 define(
"GeometryNode",
"GeometryNodeWarning");
10316 define(
"ShaderNode",
"ShaderNodeGroup",
def_group);
10317 define(
"CompositorNode",
"CompositorNodeGroup",
def_group);
10318 define(
"TextureNode",
"TextureNodeGroup",
def_group);
10319 define(
"GeometryNode",
"GeometryNodeGroup",
def_group);
10346 "ShaderNodeCustomGroup",
10348 "Shader Custom Group",
10349 "Custom Shader Group Node for Python nodes",
10350 "rna_ShaderNodeCustomGroup_register");
10352 "CompositorNodeCustomGroup",
10354 "Compositor Custom Group",
10355 "Custom Compositor Group Node for Python nodes",
10356 "rna_CompositorNodeCustomGroup_register");
10361 "Base node type for custom registered node group types",
10362 "rna_NodeCustomGroup_register");
10364 "GeometryNodeCustomGroup",
10366 "Geometry Custom Group",
10367 "Custom Geometry Group Node for Python nodes",
10368 "rna_GeometryNodeCustomGroup_register");
10374# undef NODE_DEFINE_SUBTYPES
void BKE_animdata_fix_paths_rename_all(struct ID *ref_id, const char *prefix, const char *oldName, const char *newName)
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
Main * CTX_data_main(const bContext *C)
void BKE_cryptomatte_matte_id_to_entries(struct NodeCryptomatte *node_storage, const char *matte_id)
char * BKE_cryptomatte_entries_to_matte_id(struct NodeCryptomatte *node_storage)
RenderPass * BKE_image_multilayer_index(RenderResult *rr, ImageUser *iuser)
#define IMA_SIGNAL_SRC_CHANGE
void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal)
void BKE_main_ensure_invariants(Main &bmain, std::optional< blender::Span< ID * > > modified_ids=std::nullopt)
#define NODE_CLASS_OUTPUT
constexpr int GROUP_NODE_MIN_WIDTH
constexpr int GROUP_NODE_DEFAULT_WIDTH
#define NODE_CUSTOM_GROUP
constexpr int GROUP_NODE_MAX_WIDTH
#define SH_NODE_TEX_IMAGE
#define CMP_NODE_CRYPTOMATTE
#define FN_NODE_RANDOM_VALUE
#define SH_NODE_MAP_RANGE
#define SH_NODE_TEX_ENVIRONMENT
#define CMP_NODE_OUTPUT_FILE
void BKE_ntree_update_tag_active_output_changed(bNodeTree *ntree)
void BKE_ntree_update_tag_all(bNodeTree *ntree)
void BKE_ntree_update_tag_link_changed(bNodeTree *ntree)
void BKE_ntree_update_tag_node_property(bNodeTree *ntree, bNode *node)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
@ RPT_ERROR_INVALID_INPUT
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain)
void BLI_kdtree_nd_ free(KDTree *tree)
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
void BLI_insertlinkafter(ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
int BLI_listbase_count_at_most(const ListBase *listbase, int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_insertlinkbefore(ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
MINLINE void copy_v2_v2(float r[2], const float a[2])
#define BLI_SCOPED_DEFER(function_to_defer)
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
bool void BLI_path_rel(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define SNPRINTF(dst, format,...)
char * STRNCPY(char(&dst)[N], const char *src)
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
#define STREQLEN(a, b, n)
#define SET_FLAG_FROM_TEST(value, test, flag)
#define CTX_N_(context, msgid)
#define BLT_I18NCONTEXT_ID_NODETREE
#define BLT_I18NCONTEXT_ID_IMAGE
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define BLT_I18NCONTEXT_UNIT
#define BLT_I18NCONTEXT_ID_MOVIECLIP
#define BLT_I18NCONTEXT_ID_TEXTURE
void DEG_id_tag_update_for_side_effect_request(Depsgraph *depsgraph, ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
bool DEG_is_original(const T *id)
T * DEG_get_evaluated(const Depsgraph *depsgraph, T *id)
#define ID_BLEND_PATH_FROM_GLOBAL(_id)
@ NODE_VECTOR_MATH_NORMALIZE
@ NODE_VECTOR_MATH_LENGTH
@ NODE_VECTOR_MATH_CROSS_PRODUCT
@ NODE_VECTOR_MATH_MODULO
@ NODE_VECTOR_MATH_COSINE
@ NODE_VECTOR_MATH_REFLECT
@ NODE_VECTOR_MATH_REFRACT
@ NODE_VECTOR_MATH_DOT_PRODUCT
@ NODE_VECTOR_MATH_ABSOLUTE
@ NODE_VECTOR_MATH_DIVIDE
@ NODE_VECTOR_MATH_TANGENT
@ NODE_VECTOR_MATH_DISTANCE
@ NODE_VECTOR_MATH_FRACTION
@ NODE_VECTOR_MATH_PROJECT
@ NODE_VECTOR_MATH_MULTIPLY
@ NODE_VECTOR_MATH_MAXIMUM
@ NODE_VECTOR_MATH_FACEFORWARD
@ NODE_VECTOR_MATH_SUBTRACT
@ NODE_VECTOR_MATH_MULTIPLY_ADD
@ NODE_VECTOR_MATH_MINIMUM
@ CMP_NODE_INTERPOLATION_NEAREST
@ CMP_NODE_INTERPOLATION_BILINEAR
@ CMP_NODE_INTERPOLATION_BICUBIC
@ CMP_NODE_INTERPOLATION_ANISOTROPIC
@ GEO_NODE_MESH_CIRCLE_FILL_NGON
@ GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN
@ GEO_NODE_MESH_CIRCLE_FILL_NONE
@ CMP_NODE_COMBSEP_COLOR_YCC
@ CMP_NODE_COMBSEP_COLOR_YUV
@ CMP_NODE_COMBSEP_COLOR_RGB
@ CMP_NODE_COMBSEP_COLOR_HSV
@ CMP_NODE_COMBSEP_COLOR_HSL
#define SHD_SHEEN_ASHIKHMIN
@ GEO_NODE_STRING_TO_CURVES_ALIGN_X_CENTER
@ GEO_NODE_STRING_TO_CURVES_ALIGN_X_JUSTIFY
@ GEO_NODE_STRING_TO_CURVES_ALIGN_X_FLUSH
@ GEO_NODE_STRING_TO_CURVES_ALIGN_X_LEFT
@ GEO_NODE_STRING_TO_CURVES_ALIGN_X_RIGHT
@ SHD_SPACE_BLENDER_OBJECT
@ SHD_SPACE_BLENDER_WORLD
@ NODE_MATH_FLOORED_MODULO
@ NODE_CLOSURE_FLAG_DEFINE_SIGNATURE
@ CMP_NODE_EXTENSION_MODE_EXTEND
@ CMP_NODE_EXTENSION_MODE_CLIP
@ CMP_NODE_EXTENSION_MODE_REPEAT
GeometryNodeAssetTraitFlag
@ GEO_NODE_ASSET_WAIT_FOR_CURSOR
@ GEO_NODE_ASSET_GREASE_PENCIL
@ GEO_NODE_ASSET_POINTCLOUD
@ GEO_NODE_ASSET_MODIFIER
@ GEO_NODE_ASSET_HIDE_MODIFIER_MANAGE_PANEL
@ SHD_BLEND_QUADRATIC_SPHERE
@ SHD_VORONOI_DISTANCE_TO_EDGE
@ SHD_VORONOI_N_SPHERE_RADIUS
@ SHD_NOISE_HYBRID_MULTIFRACTAL
@ SHD_NOISE_RIDGED_MULTIFRACTAL
@ SHD_NOISE_HETERO_TERRAIN
@ SHD_PHASE_HENYEY_GREENSTEIN
@ SHD_PHASE_FOURNIER_FORAND
@ GEO_NODE_CURVE_HANDLE_RIGHT
@ GEO_NODE_CURVE_HANDLE_LEFT
@ SHD_PROJ_EQUIRECTANGULAR
@ CMP_NODE_CRYPTOMATTE_SOURCE_IMAGE
@ CMP_NODE_CRYPTOMATTE_SOURCE_RENDER
@ SHD_SUBSURFACE_RANDOM_WALK_SKIN
@ SHD_SUBSURFACE_RANDOM_WALK
@ SHD_PRINCIPLED_HAIR_REFLECTANCE
@ SHD_PRINCIPLED_HAIR_DIRECT_ABSORPTION
@ SHD_PRINCIPLED_HAIR_PIGMENT_CONCENTRATION
@ SHD_WAVE_BANDS_DIRECTION_Y
@ SHD_WAVE_BANDS_DIRECTION_X
@ SHD_WAVE_BANDS_DIRECTION_Z
@ SHD_WAVE_BANDS_DIRECTION_DIAGONAL
@ GEO_NODE_STRING_TO_CURVES_PIVOT_MODE_MIDPOINT
@ GEO_NODE_STRING_TO_CURVES_PIVOT_MODE_BOTTOM_RIGHT
@ GEO_NODE_STRING_TO_CURVES_PIVOT_MODE_BOTTOM_CENTER
@ GEO_NODE_STRING_TO_CURVES_PIVOT_MODE_TOP_LEFT
@ GEO_NODE_STRING_TO_CURVES_PIVOT_MODE_TOP_CENTER
@ GEO_NODE_STRING_TO_CURVES_PIVOT_MODE_TOP_RIGHT
@ GEO_NODE_STRING_TO_CURVES_PIVOT_MODE_BOTTOM_LEFT
@ SHD_SKY_MULTIPLE_SCATTERING
@ SHD_SKY_SINGLE_SCATTERING
@ SHD_GLOSSY_ASHIKHMIN_SHIRLEY
@ FN_NODE_ROTATE_EULER_TYPE_EULER
@ FN_NODE_ROTATE_EULER_TYPE_AXIS_ANGLE
@ SHD_IMAGE_EXTENSION_MIRROR
@ SHD_IMAGE_EXTENSION_CLIP
@ SHD_IMAGE_EXTENSION_REPEAT
@ SHD_IMAGE_EXTENSION_EXTEND
@ GEO_NODE_CURVE_SAMPLE_FACTOR
@ GEO_NODE_CURVE_SAMPLE_LENGTH
@ GEO_NODE_BAKE_ITEM_IS_ATTRIBUTE
@ NODE_VECTOR_ROTATE_TYPE_AXIS
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Z
@ NODE_VECTOR_ROTATE_TYPE_AXIS_X
@ NODE_VECTOR_ROTATE_TYPE_EULER_XYZ
@ NODE_VECTOR_ROTATE_TYPE_AXIS_Y
@ GEO_NODE_POINT_DISTRIBUTE_POINTS_ON_FACES_RANDOM
@ GEO_NODE_POINT_DISTRIBUTE_POINTS_ON_FACES_POISSON
#define SHD_SHEEN_MICROFIBER
@ SHD_VECT_TRANSFORM_TYPE_VECTOR
@ SHD_VECT_TRANSFORM_TYPE_NORMAL
@ SHD_VECT_TRANSFORM_TYPE_POINT
@ NODE_VIEWER_SHORTCUT_NONE
@ NODE_MIX_MODE_NON_UNIFORM
@ SHD_WAVE_RINGS_DIRECTION_Z
@ SHD_WAVE_RINGS_DIRECTION_Y
@ SHD_WAVE_RINGS_DIRECTION_X
@ SHD_WAVE_RINGS_DIRECTION_SPHERICAL
@ GEO_NODE_GIZMO_COLOR_PRIMARY
@ GEO_NODE_GIZMO_COLOR_SECONDARY
@ NODE_SEPARATE_BUNDLE_FLAG_DEFINE_SIGNATURE
@ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_BOTTOM_BASELINE
@ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_TOP_BASELINE
@ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_TOP
@ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_BOTTOM
@ GEO_NODE_STRING_TO_CURVES_ALIGN_Y_MIDDLE
@ SHD_VECT_TRANSFORM_SPACE_WORLD
@ SHD_VECT_TRANSFORM_SPACE_OBJECT
@ SHD_VECT_TRANSFORM_SPACE_CAMERA
@ NODE_WARNING_PROPAGATION_NONE
@ NODE_WARNING_PROPAGATION_ONLY_ERRORS_AND_WARNINGS
@ NODE_WARNING_PROPAGATION_ONLY_ERRORS
@ NODE_WARNING_PROPAGATION_ALL
@ SHD_ATTRIBUTE_VIEW_LAYER
@ SHD_ATTRIBUTE_INSTANCER
@ GEO_NODE_LINEAR_GIZMO_DRAW_STYLE_CROSS
@ GEO_NODE_LINEAR_GIZMO_DRAW_STYLE_BOX
@ GEO_NODE_LINEAR_GIZMO_DRAW_STYLE_ARROW
@ NODE_MAP_RANGE_SMOOTHERSTEP
@ NODE_MAP_RANGE_SMOOTHSTEP
@ FN_NODE_ROTATE_EULER_SPACE_OBJECT
@ FN_NODE_ROTATE_EULER_SPACE_LOCAL
@ GEO_NODE_STRING_TO_CURVES_MODE_TRUNCATE
@ GEO_NODE_STRING_TO_CURVES_MODE_SCALE_TO_FIT
@ GEO_NODE_STRING_TO_CURVES_MODE_OVERFLOW
@ GEO_NODE_TRANSFORM_GIZMO_USE_ROTATION_Z
@ GEO_NODE_TRANSFORM_GIZMO_USE_SCALE_Z
@ GEO_NODE_TRANSFORM_GIZMO_USE_ROTATION_X
@ GEO_NODE_TRANSFORM_GIZMO_USE_ROTATION_Y
@ GEO_NODE_TRANSFORM_GIZMO_USE_TRANSLATION_Z
@ GEO_NODE_TRANSFORM_GIZMO_USE_TRANSLATION_Y
@ GEO_NODE_TRANSFORM_GIZMO_USE_SCALE_X
@ GEO_NODE_TRANSFORM_GIZMO_USE_SCALE_Y
@ GEO_NODE_TRANSFORM_GIZMO_USE_TRANSLATION_X
@ GEO_NODE_CURVE_HANDLE_ALIGN
@ GEO_NODE_CURVE_HANDLE_AUTO
@ GEO_NODE_CURVE_HANDLE_FREE
@ GEO_NODE_CURVE_HANDLE_VECTOR
@ NODE_BOOLEAN_MATH_IMPLY
@ NODE_BOOLEAN_MATH_NIMPLY
@ NODE_COMBINE_BUNDLE_FLAG_DEFINE_SIGNATURE
@ FN_NODE_FLOAT_TO_INT_TRUNCATE
@ FN_NODE_FLOAT_TO_INT_CEIL
@ FN_NODE_FLOAT_TO_INT_ROUND
@ FN_NODE_FLOAT_TO_INT_FLOOR
@ NODE_GEO_VIEWER_ITEM_FLAG_AUTO_REMOVE
@ SHD_PRINCIPLED_HAIR_HUANG
@ SHD_PRINCIPLED_HAIR_CHIANG
@ NODE_INTEGER_MATH_ABSOLUTE
@ NODE_INTEGER_MATH_MODULO
@ NODE_INTEGER_MATH_POWER
@ NODE_INTEGER_MATH_MINIMUM
@ NODE_INTEGER_MATH_MULTIPLY_ADD
@ NODE_INTEGER_MATH_SUBTRACT
@ NODE_INTEGER_MATH_MULTIPLY
@ NODE_INTEGER_MATH_DIVIDE_FLOOR
@ NODE_INTEGER_MATH_DIVIDE_CEIL
@ NODE_INTEGER_MATH_NEGATE
@ NODE_INTEGER_MATH_MAXIMUM
@ NODE_INTEGER_MATH_FLOORED_MODULO
@ NODE_INTEGER_MATH_DIVIDE_ROUND
@ NODE_INTEGER_MATH_DIVIDE
@ NODE_SCRIPT_AUTO_UPDATE
@ NODE_MAPPING_TYPE_POINT
@ NODE_MAPPING_TYPE_VECTOR
@ NODE_MAPPING_TYPE_TEXTURE
@ NODE_MAPPING_TYPE_NORMAL
@ NODE_COMPARE_LESS_EQUAL
@ NODE_COMPARE_COLOR_BRIGHTER
@ NODE_COMPARE_GREATER_EQUAL
@ NODE_COMPARE_GREATER_THAN
@ NODE_COMPARE_COLOR_DARKER
@ NODE_EVALUATE_CLOSURE_FLAG_DEFINE_SIGNATURE
Object is a sort of wrapper for general info.
void ED_node_type_draw_color(const char *idname, float *r_color)
void ED_init_custom_node_type(blender::bke::bNodeType *ntype)
void IMB_colormanagement_colorspace_items_add(EnumPropertyItem **items, int *totitem)
bool IMB_colormanagement_set_whitepoint(const float whitepoint[3], float &temperature, float &tint)
const char * IMB_colormanagement_colorspace_get_indexed_name(int index)
void IMB_colormanagement_get_whitepoint(const float temperature, const float tint, float whitepoint[3])
int IMB_colormanagement_colorspace_get_named_index(const char *name)
void rna_Node_socket_update(Main *bmain, Scene *scene, PointerRNA *ptr)
const EnumPropertyItem * rna_NodeSocket_structure_type_item_filter(const bNodeTree *ntree, const eNodeSocketDatatype socket_type, bool *r_free)
void rna_Node_Viewer_shortcut_node_set(PointerRNA *ptr, PropertyRNA *prop, int value)
void rna_Node_update_relations(Main *bmain, Scene *scne, PointerRNA *ptr)
void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr)
void register_node_type_sh_custom_group(blender::bke::bNodeType *ntype)
void ntreeTexCheckCyclics(struct bNodeTree *ntree)
int rna_node_socket_idname_to_enum(const char *idname)
blender::bke::bNodeTreeType * rna_node_tree_type_from_enum(int value)
int rna_node_tree_idname_to_enum(const char *idname)
const EnumPropertyItem * rna_node_tree_type_itemf(void *data, bool(*poll)(void *data, blender::bke::bNodeTreeType *), bool *r_free)
blender::bke::bNodeSocketType * rna_node_socket_type_from_enum(int value)
const EnumPropertyItem * rna_node_socket_type_itemf(void *data, bool(*poll)(void *data, blender::bke::bNodeSocketType *), bool *r_free)
int(*)(PointerRNA *ptr, void *data, bool *have_function) StructValidateFunc
#define RNA_ENUM_ITEM_SEPR
int(*)(bContext *C, PointerRNA *ptr, FunctionRNA *func, ParameterList *list) StructCallbackFunc
void(*)(void *data) StructFreeFunc
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROPOVERRIDE_NO_COMPARISON
@ PROP_VARIABLES_RENDER_OUTPUT
@ PROP_PATH_SUPPORTS_BLEND_RELATIVE
@ PROP_PATH_SUPPORTS_TEMPLATES
#define RNA_ENUM_ITEM_HEADING(name, description)
#define ND_NODE_ASSET_DATA
BMesh const char void * data
BPy_StructRNA * depsgraph
StringRefNull copy_string(StringRef str)
void copy_unsafe(char *dst) const
constexpr const char * c_str() const
virtual const int & get_corresponding_output_id(const bNode &input_bnode) const =0
const bNode * get_corresponding_output(const bNodeTree &tree, const bNode &input_bnode) const
VecBase< float, 2 > float2
RenderEngineType * RE_engines_find(const char *idname)
RenderEngine * RE_engine_create(RenderEngineType *type)
void RE_engine_free(RenderEngine *engine)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
NodeColorTag node_color_tag(const bNode &node)
void node_tree_set_output(bNodeTree &ntree)
const bNodeZoneType * zone_type_by_node_type(const int node_type)
StringRefNull node_type_find_alias(StringRefNull alias)
bool node_is_parent_and_child(const bNode &parent, const bNode &child)
void node_attach_node(bNodeTree &ntree, bNode &node, bNode &parent)
bool node_tree_is_registered(const bNodeTree &ntree)
bNodeTreeType * node_tree_type_find(StringRef idname)
Span< bNodeSocketType * > node_socket_types_get()
void node_tag_update_id(bNode &node)
bNodeSocket * node_find_socket(bNode &node, eNodeSocketInOut in_out, StringRef identifier)
void node_remove_node(Main *bmain, bNodeTree &ntree, bNode &node, bool do_id_user, bool remove_animation=true)
void node_internal_links(bNode &node, bNodeLink **r_links, int *r_len)
bNode * node_add_node(const bContext *C, bNodeTree &ntree, StringRef idname, std::optional< int > unique_identifier=std::nullopt)
bNode * node_get_active(bNodeTree &ntree)
void node_remove_socket(bNodeTree &ntree, bNode &node, bNodeSocket &sock)
void node_update_asset_metadata(bNodeTree &node_tree)
bool node_group_poll(const bNodeTree *nodetree, const bNodeTree *grouptree, const char **r_disabled_hint)
void node_register_type(bNodeType &ntype)
void node_remove_link(bNodeTree *ntree, bNodeLink &link)
void node_tree_type_add(bNodeTreeType &nt)
int node_count_socket_links(const bNodeTree &ntree, const bNodeSocket &sock)
bNode * node_find_node_try(bNodeTree &ntree, bNodeSocket &socket)
void node_tree_type_free_link(const bNodeTreeType &nt)
bool node_set_selected(bNode &node, bool select)
bNodeSocket * node_add_socket(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, StringRefNull idname, StringRefNull identifier, StringRefNull name)
bool node_tree_contains_tree(const bNodeTree &tree_to_search_in, const bNodeTree &tree_to_search_for)
void node_detach_node(bNodeTree &ntree, bNode &node)
bNodeSocketType * node_socket_type_find(StringRef idname)
bNodeLink & node_add_link(bNodeTree &ntree, bNode &fromnode, bNodeSocket &fromsock, bNode &tonode, bNodeSocket &tosock)
bNodeSocketType * node_socket_type_find_static(int type, int subtype=0)
StringRefNull node_socket_type_label(const bNodeSocketType &stype)
Span< bNodeTreeType * > node_tree_types_get()
void node_unregister_type(bNodeType &ntype)
std::optional< StringRefNull > node_static_socket_type(int type, int subtype, std::optional< int > dimensions=std::nullopt)
void node_remove_socket_links(bNodeTree &ntree, bNodeSocket &sock)
void node_set_active(bNodeTree &ntree, bNode &node)
float2 node_dimensions_get(const bNode &node)
bNodeType * node_type_find(StringRef idname)
int node_socket_link_limit(const bNodeSocket &sock)
void node_clear_active(bNodeTree &ntree)
void node_unique_name(bNodeTree &ntree, bNode &node)
bool node_link_is_hidden(const bNodeLink &link)
void node_type_base_custom(bNodeType &ntype, StringRefNull idname, StringRefNull name, StringRefNull enum_name, short nclass)
void remove_index(T **items, int *items_num, int *active_index, const int index, void(*destruct_item)(T *))
void clear(T **items, int *items_num, int *active_index, void(*destruct_item)(T *))
void move_index(T *items, const int items_num, const int from_index, const int to_index)
bool generic_attribute_type_supported(const EnumPropertyItem &item)
void set_item_name_and_make_unique(bNode &node, typename Accessor::ItemT &item, const char *value)
Accessor::ItemT * add_item_with_name(bNode &node, const char *name)
Accessor::ItemT * add_item(bNode &node)
bNode * find_node_by_item(bNodeTree &ntree, const typename Accessor::ItemT &item)
Accessor::ItemT * add_item_with_socket_type_and_name(bNodeTree &ntree, bNode &node, const eNodeSocketDatatype socket_type, const char *name, std::optional< int > dimensions=std::nullopt)
bool socket_type_supports_grids(const eNodeSocketDatatype socket_type)
VecBase< float, 2 > float2
void register_node_type_cmp_custom_group(blender::bke::bNodeType *ntype)
void ntreeCompositCryptomatteSyncFromRemove(bNode *node)
void ntreeCompositCryptomatteSyncFromAdd(bNode *node)
void ntreeCompositTagNeedExec(bNode *node)
void ntreeCompositUpdateRLayers(bNodeTree *ntree)
void register_node_type_geo_custom_group(blender::bke::bNodeType *ntype)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
const PointerRNA PointerRNA_NULL
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_parameter_list_free(ParameterList *parms)
int RNA_struct_ui_icon(const StructRNA *type)
const char * RNA_struct_ui_description(const StructRNA *type)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, void *data, size_t itemsize, int64_t length, bool free_ptr, IteratorSkipFunc skip)
void rna_pointer_create_with_ancestors(const PointerRNA &parent, StructRNA *type, void *data, PointerRNA &r_ptr)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **r_value)
PointerRNA RNA_pointer_create_with_parent(const PointerRNA &parent, StructRNA *type, void *data)
PointerRNA RNA_id_pointer_create(ID *id)
void rna_def_animdata_common(StructRNA *srna)
const EnumPropertyItem rna_enum_attribute_domain_with_auto_items[]
const EnumPropertyItem rna_enum_attribute_domain_items[]
const EnumPropertyItem rna_enum_attribute_type_items[]
const EnumPropertyItem rna_enum_color_space_convert_default_items[]
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_def_struct_system_idprops_func(StructRNA *srna, const char *system_idproperties)
FunctionRNA * RNA_def_function_runtime(StructRNA *srna, const char *identifier, CallFunc call)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_property_float_default(PropertyRNA *prop, float value)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_default(PropertyRNA *prop, bool value)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_int_default(PropertyRNA *prop, int value)
void RNA_def_property_path_template_type(PropertyRNA *prop, PropertyPathTemplateType path_template_type)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_struct_sdna_from(StructRNA *srna, const char *structname, const char *propname)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_struct_free_extension(StructRNA *srna, ExtensionRNA *rna_ext)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
void RNA_def_property_flag_hide_from_ui_workaround(PropertyRNA *prop)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
void RNA_def_struct_idprops_func(StructRNA *srna, const char *idproperties)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_function_output(FunctionRNA *, PropertyRNA *ret)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_translation_context(StructRNA *srna, const char *context)
void RNA_def_property_float_array_default(PropertyRNA *prop, const float *array)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
std::optional< std::string > rna_Node_ImageUser_path(const PointerRNA *ptr)
const EnumPropertyItem rna_enum_ramp_blend_items[]
const EnumPropertyItem rna_enum_node_socket_type_items[]
const EnumPropertyItem rna_enum_node_socket_structure_type_items[]
static const EnumPropertyItem sh_tex_prop_interpolation_items[]
static void def_closure_output(BlenderRNA *brna, StructRNA *srna)
static void def_sh_tex_sky(BlenderRNA *brna, StructRNA *srna)
static void def_custom_group(BlenderRNA *brna, const char *struct_name, const char *base_name, const char *ui_name, const char *ui_desc, const char *reg_func)
static const EnumPropertyItem node_glossy_items[]
static void def_geo_menu_switch(BlenderRNA *brna, StructRNA *srna)
static void def_geo_foreach_geometry_element_output(BlenderRNA *brna, StructRNA *srna)
static void def_vector_math(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_magic(BlenderRNA *brna, StructRNA *srna)
static void def_cmp_moviedistortion(BlenderRNA *, StructRNA *srna)
static void rna_def_geo_viewer_item(BlenderRNA *brna)
static void def_frame(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem node_subsurface_method_items[]
static const EnumPropertyItem node_script_mode_items[]
static const EnumPropertyItem prop_image_layer_items[]
static void def_sheen(BlenderRNA *, StructRNA *srna)
static void def_sh_tex(BlenderRNA *, StructRNA *srna)
static void def_cmp_mask(BlenderRNA *, StructRNA *srna)
static void def_scatter(BlenderRNA *, StructRNA *srna)
static EnumPropertyItem node_ies_mode_items[]
static void def_cmp_viewer(BlenderRNA *, StructRNA *srna)
static void def_sh_subsurface(BlenderRNA *, StructRNA *srna)
static void rna_def_texture_node(BlenderRNA *brna)
static void rna_def_geo_repeat_item(BlenderRNA *brna)
static void rna_def_closure_output_item(BlenderRNA *brna)
const EnumPropertyItem rna_enum_node_color_tag_items[]
static void def_glossy(BlenderRNA *, StructRNA *srna)
static void def_group_output(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem prop_view_layer_items[]
const EnumPropertyItem rna_enum_node_integer_math_items[]
static void rna_def_node_link(BlenderRNA *brna)
static const EnumPropertyItem rna_node_geometry_curve_handle_type_items[]
static const EnumPropertyItem prop_image_view_items[]
static void rna_def_nodetree(BlenderRNA *brna)
static void def_fn_format_string(BlenderRNA *brna, StructRNA *srna)
static void def_geo_repeat_output(BlenderRNA *brna, StructRNA *srna)
static void rna_def_shader_node(BlenderRNA *brna)
static void rna_def_geo_repeat_items(BlenderRNA *brna)
static const EnumPropertyItem prop_shader_output_target_items[]
static const EnumPropertyItem node_metallic_distribution_items[]
static const EnumPropertyItem node_hair_items[]
static void rna_def_evaluate_closure_output_items(BlenderRNA *brna)
static void rna_def_compositor_node(BlenderRNA *brna)
static void rna_def_evaluate_closure_output_item(BlenderRNA *brna)
static void def_geo_distribute_points_on_faces(BlenderRNA *, StructRNA *srna)
static void rna_def_geo_simulation_state_item(BlenderRNA *brna)
static void def_sh_vect_transform(BlenderRNA *, StructRNA *srna)
static void def_fn_input_string(BlenderRNA *, StructRNA *srna)
static void rna_def_evaluate_closure_input_items(BlenderRNA *brna)
static void def_texture(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_wave(BlenderRNA *brna, StructRNA *srna)
const EnumPropertyItem rna_enum_node_float_to_int_items[]
static void rna_def_geo_foreach_geometry_element_input_item(BlenderRNA *brna)
static void def_cmp_defocus(BlenderRNA *, StructRNA *srna)
static void rna_def_cmp_file_output_item(BlenderRNA *brna)
static void def_sh_normal_map(BlenderRNA *, StructRNA *srna)
static void def_geo_index_switch(BlenderRNA *brna, StructRNA *srna)
static void rna_def_nodetree_link_api(BlenderRNA *brna, PropertyRNA *cprop)
static void def_sh_attribute(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_voronoi(BlenderRNA *brna, StructRNA *srna)
static void rna_def_node(BlenderRNA *brna)
static void def_combine_bundle(BlenderRNA *brna, StructRNA *srna)
static const EnumPropertyItem rna_enum_node_tex_dimensions_items[]
static void def_sh_bevel(BlenderRNA *, StructRNA *srna)
static void def_group(BlenderRNA *, StructRNA *srna)
static void rna_def_geo_viewer(BlenderRNA *brna, StructRNA *srna)
static void def_cmp_colorbalance(BlenderRNA *, StructRNA *srna)
static void def_sh_uvalongstroke(BlenderRNA *, StructRNA *srna)
static void rna_def_geo_foreach_geometry_element_generation_item(BlenderRNA *brna)
static void def_float_to_int(BlenderRNA *, StructRNA *srna)
static void def_common_zone_input(BlenderRNA *, StructRNA *srna)
static void def_fn_input_int(BlenderRNA *, StructRNA *srna)
static void def_fn_input_rotation(BlenderRNA *, StructRNA *srna)
static void rna_def_combine_bundle_items(BlenderRNA *brna)
static void def_refraction(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem node_metallic_fresnel_type_items[]
static void rna_def_geo_gizmo_transform(BlenderRNA *, StructRNA *srna)
static void def_tex_image(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_checker(BlenderRNA *brna, StructRNA *srna)
static void def_float_curve(BlenderRNA *, StructRNA *srna)
static void rna_def_internal_node(BlenderRNA *brna)
static void def_cmp_render_layers(BlenderRNA *, StructRNA *srna)
static void def_cmp_movieclip(BlenderRNA *, StructRNA *srna)
static void def_tex_output(BlenderRNA *, StructRNA *srna)
static void def_sh_output_linestyle(BlenderRNA *brna, StructRNA *srna)
const EnumPropertyItem rna_enum_mapping_type_items[]
static void rna_def_geo_field_to_grid_item(BlenderRNA *brna)
const EnumPropertyItem rna_enum_node_compositor_extension_items[]
static const EnumPropertyItem node_scatter_phase_items[]
static void def_cmp_convert_to_display(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem rna_enum_vector_rotate_type_items[]
static void def_geo_field_to_grid(BlenderRNA *brna, StructRNA *srna)
const EnumPropertyItem rna_enum_node_combsep_color_items[]
static void def_geo_simulation_input(BlenderRNA *brna, StructRNA *srna)
static void rna_def_geo_bake_item(BlenderRNA *brna)
static const EnumPropertyItem node_cryptomatte_layer_name_items[]
static const EnumPropertyItem node_ycc_items[]
static void def_reroute(BlenderRNA *, StructRNA *srna)
static void def_mix_rgb(BlenderRNA *, StructRNA *srna)
static void def_metallic(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem node_refraction_items[]
const EnumPropertyItem rna_enum_node_compositor_interpolation_items[]
static void def_geo_input_collection(BlenderRNA *, StructRNA *srna)
static void rna_def_separate_bundle_item(BlenderRNA *brna)
static void rna_def_function_node(BlenderRNA *brna)
static void def_sh_output_aov(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_white_noise(BlenderRNA *, StructRNA *srna)
static void rna_def_node_instance_hash(BlenderRNA *brna)
static void def_vector_curve(BlenderRNA *, StructRNA *srna)
static void def_sh_output(BlenderRNA *, StructRNA *srna)
static void def_geo_input_normal(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_brick(BlenderRNA *brna, StructRNA *srna)
static const EnumPropertyItem prop_image_extension[]
static void def_geo_sample_index(BlenderRNA *, StructRNA *srna)
static void def_cmp_convert_color_space(BlenderRNA *, StructRNA *srna)
static void def_hair_principled(BlenderRNA *, StructRNA *srna)
static void def_cmp_planetrackdeform(BlenderRNA *, StructRNA *srna)
static void def_fn_random_value(BlenderRNA *, StructRNA *srna)
static void def_cmp_cryptomatte(BlenderRNA *brna, StructRNA *srna)
static void rna_def_geo_foreach_geometry_element_generation_items(BlenderRNA *brna)
static void rna_def_closure_output_items(BlenderRNA *brna)
static void def_separate_bundle(BlenderRNA *brna, StructRNA *srna)
static void def_tex_bricks(BlenderRNA *, StructRNA *srna)
static void rna_def_fn_format_string_item(BlenderRNA *brna)
static void rna_def_geo_simulation_state_items(BlenderRNA *brna)
static void rna_def_combine_bundle_item(BlenderRNA *brna)
static void rna_def_closure_input_item(BlenderRNA *brna)
static void def_sh_vector_displacement(BlenderRNA *, StructRNA *srna)
static void rna_def_geo_capture_attribute(BlenderRNA *brna, StructRNA *srna)
static void rna_def_texture_nodetree(BlenderRNA *brna)
static void def_sh_uvmap(BlenderRNA *, StructRNA *srna)
static void def_time(BlenderRNA *, StructRNA *srna)
static void rna_def_closure_input_items(BlenderRNA *brna)
static void def_cmp_trackpos(BlenderRNA *, StructRNA *srna)
const EnumPropertyItem rna_enum_node_socket_in_out_items[]
void RNA_def_nodetree(BlenderRNA *brna)
static void def_sh_tex_coord(BlenderRNA *, StructRNA *srna)
static void def_fn_input_color(BlenderRNA *, StructRNA *srna)
const EnumPropertyItem rna_enum_node_math_items[]
static void rna_def_shader_nodetree(BlenderRNA *brna)
static void rna_def_geo_foreach_geometry_element_input_items(BlenderRNA *brna)
static void def_cmp_file_output(BlenderRNA *brna, StructRNA *srna)
static void rna_def_cmp_file_output_items(BlenderRNA *brna)
static void rna_def_index_switch_item(BlenderRNA *brna)
static void rna_def_evaluate_closure_input_item(BlenderRNA *brna)
static void rna_def_geo_capture_attribute_item(BlenderRNA *brna)
static void rna_def_geo_menu_switch_item(BlenderRNA *brna)
static void def_sh_radial_tiling(BlenderRNA *, StructRNA *srna)
const EnumPropertyItem rna_enum_node_geometry_curve_handle_side_items[]
const EnumPropertyItem rna_enum_node_socket_data_type_items[]
const EnumPropertyItem rna_enum_node_vec_math_items[]
const EnumPropertyItem rna_enum_geometry_nodes_linear_gizmo_draw_style_items[]
static void def_cmp_keyingscreen(BlenderRNA *, StructRNA *srna)
static void def_node_image_user(BlenderRNA *, StructRNA *srna)
static void def_sh_vector_rotate(BlenderRNA *, StructRNA *srna)
static void def_group_input(BlenderRNA *, StructRNA *)
static void rna_def_geo_capture_attribute_items(BlenderRNA *brna)
static void rna_def_geometry_nodetree(BlenderRNA *brna)
static void def_cmp_combsep_color(BlenderRNA *, StructRNA *srna)
static void def_volume_coefficients(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_ies(BlenderRNA *, StructRNA *srna)
static void def_sh_mapping(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem node_principled_hair_model_items[]
static void def_evaluate_closure(BlenderRNA *brna, StructRNA *srna)
static void rna_def_geo_field_to_grid_items(BlenderRNA *brna)
static void def_sh_script(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem node_principled_hair_parametrization_items[]
const EnumPropertyItem rna_enum_node_geometry_mesh_circle_fill_type_items[]
static void def_cmp_cryptomatte_legacy(BlenderRNA *brna, StructRNA *srna)
static const EnumPropertyItem node_glass_items[]
static void def_clamp(BlenderRNA *, StructRNA *srna)
const EnumPropertyItem rna_enum_node_boolean_math_items[]
static void def_geo_curve_sample(BlenderRNA *, StructRNA *srna)
static void rna_def_geo_bake_items(BlenderRNA *brna)
static void rna_def_geo_index_switch_items(BlenderRNA *brna)
const EnumPropertyItem rna_enum_geometry_nodes_gizmo_color_items[]
static void rna_def_node_item_array_common_functions(StructRNA *srna, const char *item_name, const char *accessor_name)
static void def_cmp_huecorrect(BlenderRNA *, StructRNA *srna)
const EnumPropertyItem rna_enum_node_map_range_items[]
static void def_cmp_stabilize2d(BlenderRNA *, StructRNA *srna)
static void def_geo_simulation_output(BlenderRNA *brna, StructRNA *srna)
static void def_geo_input_material(BlenderRNA *, StructRNA *srna)
static void def_sh_mix(BlenderRNA *, StructRNA *srna)
const EnumPropertyItem rna_enum_node_compare_operation_items[]
static void def_sh_combsep_color(BlenderRNA *, StructRNA *srna)
static void def_hair(BlenderRNA *, StructRNA *srna)
static void def_toon(BlenderRNA *, StructRNA *srna)
static void def_map_range(BlenderRNA *, StructRNA *srna)
static void rna_def_node_sockets_api(BlenderRNA *brna, PropertyRNA *cprop, int in_out)
static void def_cmp_cryptomatte_common(BlenderRNA *, StructRNA *srna)
static void rna_def_nodes(BlenderRNA *brna)
static void def_principled(BlenderRNA *, StructRNA *srna)
static void def_geo_foreach_geometry_element_input(BlenderRNA *brna, StructRNA *srna)
static void def_geo_input_object(BlenderRNA *, StructRNA *srna)
static void rna_def_separate_bundle_items(BlenderRNA *brna)
static void def_sh_tex_noise(BlenderRNA *brna, StructRNA *srna)
static void def_geo_curve_handle_type_selection(BlenderRNA *, StructRNA *srna)
static void def_rgb_curve(BlenderRNA *, StructRNA *srna)
static void def_glass(BlenderRNA *, StructRNA *srna)
static void def_sh_displacement(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem rna_enum_mix_data_type_items[]
static void def_sh_ambient_occlusion(BlenderRNA *, StructRNA *srna)
static void rna_def_composite_nodetree(BlenderRNA *brna)
static void rna_def_geometry_node(BlenderRNA *brna)
static void def_fn_input_vector(BlenderRNA *, StructRNA *srna)
static void def_colorramp(BlenderRNA *, StructRNA *srna)
const EnumPropertyItem rna_enum_node_clamp_items[]
static void def_tex_combsep_color(BlenderRNA *, StructRNA *srna)
static void def_geo_image_texture(BlenderRNA *, StructRNA *srna)
static void def_math(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem node_sheen_items[]
static void rna_def_node_item_array_socket_item_common(StructRNA *srna, const char *accessor, const bool add_socket_type, const bool add_vector_socket_dimensions=false)
static void def_sh_bump(BlenderRNA *, StructRNA *srna)
static void def_sh_tangent(BlenderRNA *, StructRNA *srna)
static void def_geo_string_to_curves(BlenderRNA *, StructRNA *srna)
static void def_fn_rotate_euler(BlenderRNA *, StructRNA *srna)
static void rna_def_geo_bake(BlenderRNA *brna, StructRNA *srna)
static void def_fn_input_bool(BlenderRNA *, StructRNA *srna)
static void rna_def_node_item_array_new_with_socket_and_name(StructRNA *srna, const char *item_name, const char *accessor_name)
static void def_geo_repeat_input(BlenderRNA *brna, StructRNA *srna)
static void rna_def_geo_viewer_items(BlenderRNA *brna)
static void def_cmp_cryptomatte_entry(BlenderRNA *brna)
static void def_sh_vertex_color(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_gabor(BlenderRNA *brna, StructRNA *srna)
static void rna_def_geo_foreach_geometry_element_main_items(BlenderRNA *brna)
static void def_sh_tex_gradient(BlenderRNA *brna, StructRNA *srna)
static void def_closure_input(BlenderRNA *brna, StructRNA *srna)
static void def_cmp_image(BlenderRNA *brna, StructRNA *srna)
static void rna_def_geo_foreach_geometry_element_main_item(BlenderRNA *brna)
static const EnumPropertyItem node_principled_distribution_items[]
static void def_geo_curve_set_handle_type(BlenderRNA *, StructRNA *srna)
static void rna_def_fn_format_string_items(BlenderRNA *brna)
static void rna_def_nodetree_nodes_api(BlenderRNA *brna, PropertyRNA *cprop)
static void def_sh_tex_wireframe(BlenderRNA *, StructRNA *srna)
static const EnumPropertyItem node_toon_items[]
static void def_geo_image(BlenderRNA *, StructRNA *srna)
static void def_sh_tex_image(BlenderRNA *brna, StructRNA *srna)
static StructRNA * define_specific_node(BlenderRNA *brna, const char *struct_name, const char *base_name)
static void rna_def_geo_menu_switch_items(BlenderRNA *brna)
static void def_sh_tex_environment(BlenderRNA *brna, StructRNA *srna)
static const EnumPropertyItem space_items[]
const EnumPropertyItem rna_enum_dummy_NULL_items[]
static const EnumPropertyItem prop_noise_type[]
const EnumPropertyItem rna_enum_icon_items[]
bool RE_layers_have_name(RenderResult *result)
struct RenderLayer * next
struct bNodeTree * compositing_node_group
struct bNodeSocket * next
struct GeometryNodeAssetTraits * geometry_node_asset_traits
bNodeTreeTypeHandle * typeinfo
bNodeTreeInterface tree_interface
bNodeTypeHandle * typeinfo
IDProperty * system_properties
Compact definition of a node socket.
void(* update)(bNodeTree *ntree)
std::string ui_description
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)
bool(* valid_socket_type)(bNodeTreeType *ntreetype, bNodeSocketType *socket_type)
void(* freefunc_api)(PointerRNA *ptr)
std::string ui_description
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)
void(* draw_buttons_ex)(uiLayout *, bContext *C, PointerRNA *ptr)
bNodeSocketTemplate * outputs
void(* draw_buttons)(uiLayout *, bContext *C, PointerRNA *ptr)
bool(* insert_link)(NodeInsertLinkParams ¶ms)
bool(* poll)(const bNodeType *ntype, const bNodeTree *nodetree, const char **r_disabled_hint)
void(* copyfunc_api)(PointerRNA *ptr, const bNode *src_node)
void(* free_self)(bNodeType *ntype)
void(* updatefunc)(bNodeTree *ntree, bNode *node)
void(* initfunc_api)(const bContext *C, PointerRNA *ptr)
void WM_main_add_notifier(uint type, void *reference)