77 {0,
nullptr, 0,
nullptr,
nullptr}};
95 {0,
nullptr, 0,
nullptr,
nullptr},
103 "Default tag for new node groups"},
117 {0,
nullptr, 0,
nullptr,
nullptr},
126 "Transform a texture by inverse mapping the texture coordinate"},
131 "Transform a direction vector (Location is ignored)"},
136 "Transform a unit normal vector (Location is ignored)"},
137 {0,
nullptr, 0,
nullptr,
nullptr},
145 "Rotate a point using axis angle"},
150 {0,
nullptr, 0,
nullptr,
nullptr},
164 {
NODE_MATH_INV_SQRT,
"INVERSE_SQRT", 0,
"Inverse Square Root",
"1 / Square root of A"},
173 {
NODE_MATH_COMPARE,
"COMPARE", 0,
"Compare",
"1 if (A == B) within tolerance C else 0"},
178 "The minimum from A and B with smoothing C"},
183 "The maximum from A and B with smoothing C"},
189 "Round A to the nearest integer. Round upward if the fraction part is 0.5"},
190 {
NODE_MATH_FLOOR,
"FLOOR", 0,
"Floor",
"The largest integer smaller than or equal A"},
191 {
NODE_MATH_CEIL,
"CEIL", 0,
"Ceil",
"The smallest integer greater than or equal A"},
192 {
NODE_MATH_TRUNC,
"TRUNC", 0,
"Truncate",
"The integer part of A, removing fractional digits"},
199 "The remainder of truncated division using fmod(A,B)"},
204 "The remainder of floored division"},
205 {
NODE_MATH_WRAP,
"WRAP", 0,
"Wrap",
"Wrap value to range, wrap(A,B)"},
206 {
NODE_MATH_SNAP,
"SNAP", 0,
"Snap",
"Snap to increment, snap(A,B)"},
211 "Wraps a value and reverses every other cycle (A,B)"},
226 {
NODE_MATH_RADIANS,
"RADIANS", 0,
"To Radians",
"Convert from degrees to radians"},
227 {
NODE_MATH_DEGREES,
"DEGREES", 0,
"To Degrees",
"Convert from radians to degrees"},
228 {0,
nullptr, 0,
nullptr,
nullptr},
244 "Reflect A around the normal B. B doesn't need to be normalized."},
249 "For a given incident vector A, surface normal B and ratio of indices of refraction, Ior, "
250 "refract returns the refraction vector, R"},
255 "Orients a vector A to point away from a surface B as defined by its normal C. "
256 "Returns (dot(B, C) < 0) ? A : -A"},
276 "Round A to the largest integer multiple of B less than or equal A"},
281 {0,
nullptr, 0,
nullptr,
nullptr},
295 "True when both inputs are equal (exclusive nor)"},
300 "True when both inputs are different (exclusive or)"},
306 "True unless the first input is true and the second is false"},
311 "True when the first input is true and the second is false (not imply)"},
312 {0,
nullptr, 0,
nullptr,
nullptr},
320 "True when the first input is smaller than second input"},
324 "Less Than or Equal",
325 "True when the first input is smaller than the second input or equal"},
330 "True when the first input is greater than the second input"},
334 "Greater Than or Equal",
335 "True when the first input is greater than the second input or equal"},
336 {
NODE_COMPARE_EQUAL,
"EQUAL", 0,
"Equal",
"True when both inputs are approximately equal"},
341 "True when both inputs are not approximately equal"},
342 {0,
nullptr, 0,
nullptr,
nullptr},
361 "The minimum value from A and B, min(A,B)"},
366 "The maximum value from A and B, max(A,B)"},
373 "Divide and round result toward zero"},
378 "Divide and floor result, the largest integer smaller than or equal A"},
383 "Divide and ceil result, the smallest integer greater than or equal A"},
389 "Modulo that is periodic for both negative and positive operands"},
395 "Greatest Common Divisor",
396 "The largest positive integer that divides into each of the values A and B, "
397 "e.g. GCD(8,12) = 4"},
401 "Least Common Multiple",
402 "The smallest positive integer that is divisible by both A and B, e.g. LCM(6,10) = 30"},
403 {0,
nullptr, 0,
nullptr,
nullptr},
411 "True when the first input is smaller than second input"},
415 "Less Than or Equal",
416 "True when the first input is smaller than the second input or equal"},
421 "True when the first input is greater than the second input"},
425 "Greater Than or Equal",
426 "True when the first input is greater than the second input or equal"},
427 {
NODE_COMPARE_EQUAL,
"EQUAL", 0,
"Equal",
"True when both inputs are approximately equal"},
432 "True when both inputs are not approximately equal"},
437 "True when the first input is brighter"},
439 {0,
nullptr, 0,
nullptr,
nullptr},
447 "Round the float up or down to the nearest integer"},
452 "Round the float down to the next smallest integer"},
457 "Round the float up to the next largest integer"},
462 "Round the float to the closest integer in the direction of zero (floor if positive; ceiling "
464 {0,
nullptr, 0,
nullptr,
nullptr},
472 "Linear interpolation between From Min and From Max values"},
477 "Stepped linear interpolation between From Min and From Max values"},
482 "Smooth Hermite edge interpolation between From Min and From Max values"},
487 "Smoother Hermite edge interpolation between From Min and From Max values"},
488 {0,
nullptr, 0,
nullptr,
nullptr},
492 {
NODE_CLAMP_MINMAX,
"MINMAX", 0,
"Min Max",
"Constrain value between min and max"},
497 "Constrain value between min and max, swapping arguments when min > max"},
498 {0,
nullptr, 0,
nullptr,
nullptr},
502 {1,
"1D", 0,
"1D",
"Use the scalar value W as input"},
503 {2,
"2D", 0,
"2D",
"Use the 2D vector (X, Y) as input. The Z component is ignored."},
504 {3,
"3D", 0,
"3D",
"Use the 3D vector (X, Y, Z) as input"},
505 {4,
"4D", 0,
"4D",
"Use the 4D vector (X, Y, Z, W) as input"},
506 {0,
nullptr, 0,
nullptr,
nullptr},
510 {0,
"SOFTEN", 0,
"Soften",
""},
511 {1,
"SHARPEN", 0,
"Box Sharpen",
"An aggressive sharpening filter"},
512 {7,
"SHARPEN_DIAMOND", 0,
"Diamond Sharpen",
"A moderate sharpening filter"},
513 {2,
"LAPLACE", 0,
"Laplace",
""},
514 {3,
"SOBEL", 0,
"Sobel",
""},
515 {4,
"PREWITT", 0,
"Prewitt",
""},
516 {5,
"KIRSCH", 0,
"Kirsch",
""},
517 {6,
"SHADOW", 0,
"Shadow",
""},
518 {0,
nullptr, 0,
nullptr,
nullptr},
526 "The handle can be moved anywhere, and doesn't influence the point's other handle"},
531 "The location is automatically calculated to be smooth"},
536 "The location is calculated to point to the next/previous control point"},
541 "The location is constrained to point in the opposite direction as the other handle"},
542 {0,
nullptr, 0,
nullptr,
nullptr}};
547 {0,
nullptr, 0,
nullptr,
nullptr}};
553 {0,
nullptr, 0,
nullptr,
nullptr},
561 {0,
nullptr, 0,
nullptr,
nullptr},
568 {0,
nullptr, 0,
nullptr,
nullptr},
577 {0,
nullptr, 0,
nullptr,
nullptr},
584 {0,
nullptr, 0,
nullptr,
nullptr},
589 {0,
"NEAREST", 0,
"Nearest",
""},
590 {1,
"BILINEAR", 0,
"Bilinear",
""},
591 {2,
"BICUBIC", 0,
"Bicubic",
""},
592 {0,
nullptr, 0,
nullptr,
nullptr},
600 "Use shaders for all renderers and viewports, unless there exists a more specific output"},
603 {0,
nullptr, 0,
nullptr,
nullptr},
607 {0,
"CryptoObject", 0,
"Object",
"Use Object layer"},
608 {1,
"CryptoMaterial", 0,
"Material",
"Use Material layer"},
609 {2,
"CryptoAsset", 0,
"Asset",
"Use Asset layer"},
610 {0,
nullptr, 0,
nullptr,
nullptr},
623# include <fmt/format.h>
671extern FunctionRNA rna_NodeTree_get_from_context_func;
672extern FunctionRNA rna_NodeTree_valid_socket_type_func;
688 int i = 0, result = -1;
690 if (
STREQ(nt->idname, idname)) {
720 int totitem = 0, i = 0;
723 if (poll && !poll(data, nt)) {
730 tmp.
icon = nt->ui_icon;
731 tmp.
name = nt->ui_name;
753 int i = 0, result = -1;
755 if (
STREQ(stype->idname, idname)) {
785 int totitem = 0, i = 0;
789 if (poll && !poll(data, stype)) {
794 srna = stype->ext_socket.srna;
835 tmp.
icon = ICON_NONE;
840 tmp.
name =
N_(
"CustomGroup");
842 tmp.
icon = ICON_NONE;
847 tmp.
name =
N_(
"UNDEFINED");
849 tmp.
icon = ICON_NONE;
852 const char *category =
"";
854 category =
"ShaderNode";
857 category =
"CompositorNode";
860 category =
"TextureNode";
863 category =
"GeometryNode";
866 category =
"FunctionNode";
870 if (ntype->enum_name_legacy &&
873 tmp.
value = ntype->type;
875 tmp.
name = ntype->ui_name;
877 tmp.
icon = ICON_NONE;
895 if (ntree->
typeinfo->rna_ext.srna) {
896 return ntree->
typeinfo->rna_ext.srna;
899 return &RNA_NodeTree;
911 func = &rna_NodeTree_poll_func;
918 visible = *
static_cast<bool *
>(
ret);
925static void rna_NodeTree_update_reg(
bNodeTree *ntree)
931 func = &rna_NodeTree_update_func;
934 ntree->
typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
939static void rna_NodeTree_get_from_context(
const bContext *C,
947 void *ret1, *ret2, *ret3;
951 func = &rna_NodeTree_get_from_context_func;
961 *r_id = *(
ID **)ret2;
962 *r_from = *(
ID **)ret3;
976 func = &rna_NodeTree_valid_socket_type_func;
983 valid = *
static_cast<bool *
>(
ret);
1012 const char *identifier,
1019 bool have_function[4];
1023 memset(&dummy_ntree, 0,
sizeof(
bNodeTree));
1028 if (validate(&dummy_ntree_ptr, data, have_function) != 0) {
1032 if (strlen(identifier) >=
sizeof(dummy_nt.
idname)) {
1035 "Registering node tree class: '%s' is too long, maximum length is %d",
1037 int(
sizeof(dummy_nt.
idname)));
1046 "Registering node tree class: '%s', bl_idname '%s' has been registered before, "
1047 "unregistering previous",
1052 if (!rna_NodeTree_unregister(bmain, nt->
rna_ext.
srna)) {
1055 "Registering node tree class: '%s', bl_idname '%s' could not be unregistered",
1065 memcpy(nt, &dummy_nt,
sizeof(dummy_nt));
1078 nt->
poll = (have_function[0]) ? rna_NodeTree_poll : nullptr;
1079 nt->
update = (have_function[1]) ? rna_NodeTree_update_reg : nullptr;
1080 nt->
get_from_context = (have_function[2]) ? rna_NodeTree_get_from_context : nullptr;
1081 nt->
valid_socket_type = (have_function[3]) ? rna_NodeTree_valid_socket_type : nullptr;
1097 "Node tree '%s' has undefined type %s",
1120 rna_NodeTree_update(bmain, scene,
ptr);
1182 if (!rna_NodeTree_check(ntree, reports)) {
1195 const char *disabled_hint =
nullptr;
1196 if (ntype->
poll && !ntype->
poll(ntype, ntree, &disabled_hint)) {
1197 if (disabled_hint) {
1200 "Cannot add node of type %s to node tree '%s'\n %s",
1209 "Cannot add node of type %s to node tree '%s'",
1230static void rna_NodeTree_node_remove(
bNodeTree *ntree,
1237 if (!rna_NodeTree_check(ntree, reports)) {
1258 if (!rna_NodeTree_check(ntree, reports)) {
1286 bNode *node =
static_cast<bNode *
>(value.data);
1292 if (node->typeinfo->nclass ==
NODE_CLASS_OUTPUT && node->type != CMP_NODE_OUTPUT_FILE) {
1296 if (other_node->type == node->type) {
1297 other_node->flag &= ~NODE_DO_OUTPUT;
1316 bool handle_dynamic_sockets)
1319 bNode *fromnode =
nullptr, *tonode =
nullptr;
1321 if (!rna_NodeTree_check(ntree, reports)) {
1330 if (!fromnode || !tonode) {
1340 std::swap(fromsock, tosock);
1341 std::swap(fromnode, tonode);
1344 if (handle_dynamic_sockets) {
1347 new_link.fromsock = fromsock;
1348 new_link.tonode = tonode;
1349 new_link.tosock = tosock;
1351 if (fromnode->
typeinfo->insert_link) {
1352 if (!fromnode->
typeinfo->insert_link(ntree, fromnode, &new_link)) {
1356 if (tonode->typeinfo->insert_link) {
1357 if (!tonode->typeinfo->insert_link(ntree, tonode, &new_link)) {
1362 fromsock = new_link.fromsock;
1363 tosock = new_link.tosock;
1366 if (verify_limits) {
1380 if (link->fromsock == fromsock && link->tosock == tosock) {
1392 fromsock->
flag &= ~SOCK_HIDDEN;
1393 tosock->
flag &= ~SOCK_HIDDEN;
1401static void rna_NodeTree_link_remove(
bNodeTree *ntree,
1408 if (!rna_NodeTree_check(ntree, reports)) {
1428 if (!rna_NodeTree_check(ntree, reports)) {
1448static void rna_NodeTree_debug_lazy_function_graph(
bNodeTree *
tree,
1460 std::lock_guard
lock{
tree->
runtime->geometry_nodes_lazy_function_graph_info_mutex};
1461 if (!
tree->runtime->geometry_nodes_lazy_function_graph_info) {
1464 std::string dot_str =
tree->runtime->geometry_nodes_lazy_function_graph_info->graph.to_dot();
1466 *r_len = dot_str.size();
1469static void rna_NodeTree_debug_zone_body_lazy_function_graph(
1470 ID *tree_id,
bNode *node,
bContext *C,
const char **r_str,
int *r_len)
1480 std::lock_guard
lock{
tree->
runtime->geometry_nodes_lazy_function_graph_info_mutex};
1481 if (!
tree->runtime->geometry_nodes_lazy_function_graph_info) {
1484 const auto *graph =
tree->runtime->geometry_nodes_lazy_function_graph_info
1485 ->debug_zone_body_graphs.lookup_default(node->identifier,
nullptr);
1489 std::string dot_str = graph->to_dot();
1491 *r_len = dot_str.size();
1494static void rna_NodeTree_debug_zone_lazy_function_graph(
1495 ID *tree_id,
bNode *node,
bContext *C,
const char **r_str,
int *r_len)
1507 tree->
runtime->logged_zone_graphs = std::make_unique<blender::bke::LoggedZoneGraphs>();
1516 std::optional<std::string> dot_str =
tree->runtime->logged_zone_graphs->graph_by_zone_id.pop_try(
1522 *r_len = dot_str->size();
1540static void rna_NodeLink_swap_multi_input_sort_id(
1543 if (
self->tosock != other->tosock) {
1548 std::swap(
self->multi_input_sort_id, other->multi_input_sort_id);
1562 if (node->typeinfo->rna_ext.srna) {
1563 return node->
typeinfo->rna_ext.srna;
1570static std::optional<std::string> rna_Node_path(
const PointerRNA *
ptr)
1573 char name_esc[
sizeof(node->name) * 2];
1576 return fmt::format(
"nodes[\"{}\"]", name_esc);
1583 return std::nullopt;
1587 switch (node->type) {
1590 if (&data->iuser !=
ptr->
data) {
1597 if (&data->iuser !=
ptr->
data) {
1606 char name_esc[
sizeof(node->name) * 2];
1608 return fmt::format(
"nodes[\"{}\"].image_user", name_esc);
1611 return std::nullopt;
1624 func = &rna_Node_poll_func;
1631 visible = *
static_cast<bool *
>(
ret);
1638static bool rna_Node_poll_instance(
const bNode *node,
1648 nullptr, node->typeinfo->rna_ext.srna,
const_cast<bNode *
>(node));
1649 func = &rna_Node_poll_instance_func;
1653 node->typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1656 visible = *
static_cast<bool *
>(
ret);
1663static bool rna_Node_poll_instance_default(
const bNode *node,
1665 const char **disabled_info)
1668 return rna_Node_poll(node->typeinfo, ntree, disabled_info);
1677 reinterpret_cast<ID *
>(ntree), node->typeinfo->rna_ext.srna, node);
1678 func = &rna_Node_update_func;
1681 node->typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1692 reinterpret_cast<ID *
>(ntree), node->typeinfo->rna_ext.srna, node);
1693 func = &rna_Node_insert_link_func;
1697 node->typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1709 func = &rna_Node_init_func;
1712 node->typeinfo->rna_ext.call(
const_cast<bContext *
>(C),
ptr, func, &list);
1723 func = &rna_Node_copy_func;
1727 node->typeinfo->rna_ext.call(
nullptr,
ptr, func, &list);
1738 func = &rna_Node_free_func;
1741 node->typeinfo->rna_ext.call(
nullptr,
ptr, func, &list);
1752 func = &rna_Node_draw_buttons_func;
1757 node->typeinfo->rna_ext.call(C,
ptr, func, &list);
1768 func = &rna_Node_draw_buttons_ext_func;
1773 node->typeinfo->rna_ext.call(C,
ptr, func, &list);
1778static void rna_Node_draw_label(
const bNodeTree *ntree,
1788 func = &rna_Node_draw_label_func;
1791 const_cast<ID *
>(&ntree->
id), &RNA_Node,
const_cast<bNode *
>(node));
1793 node->typeinfo->rna_ext.call(
nullptr, &
ptr, func, &list);
1796 rlabel =
static_cast<char *
>(
ret);
1802static bool rna_Node_is_registered_node_type(
StructRNA *type)
1816static void rna_Node_is_registered_node_type_runtime(
bContext * ,
1830 if (!nt || rna_Node_is_builtin(nt)) {
1852 const char *identifier,
1861 bool have_function[10];
1868 memset(&dummy_node, 0,
sizeof(
bNode));
1873 if (validate(&dummy_node_ptr, data, have_function) != 0) {
1877 if (strlen(identifier) >=
sizeof(dummy_nt.
idname)) {
1880 "Registering node class: '%s' is too long, maximum length is %d",
1882 int(
sizeof(dummy_nt.
idname)));
1890 if (rna_Node_is_builtin(nt)) {
1893 "Registering node class: '%s', bl_idname '%s' is a builtin node",
1901 "Registering node class: '%s', bl_idname '%s' has been registered before, "
1902 "unregistering previous",
1907 if (!rna_Node_unregister(bmain, nt->
rna_ext.
srna)) {
1910 "Registering node class: '%s', bl_idname '%s' could not be unregistered",
1920 memcpy(nt, &dummy_nt,
sizeof(dummy_nt));
1933 nt->
rna_ext.
srna,
"is_registered_node_type", rna_Node_is_registered_node_type_runtime);
1942 nt->
poll = (have_function[0]) ? rna_Node_poll : nullptr;
1943 nt->
poll_instance = (have_function[1]) ? rna_Node_poll_instance : rna_Node_poll_instance_default;
1944 nt->
updatefunc = (have_function[2]) ? rna_Node_update_reg : nullptr;
1945 nt->
insert_link = (have_function[3]) ? rna_Node_insert_link : nullptr;
1946 nt->
initfunc_api = (have_function[4]) ? rna_Node_init : nullptr;
1947 nt->
copyfunc_api = (have_function[5]) ? rna_Node_copy : nullptr;
1948 nt->
freefunc_api = (have_function[6]) ? rna_Node_free : nullptr;
1949 nt->
draw_buttons = (have_function[7]) ? rna_Node_draw_buttons : nullptr;
1950 nt->
draw_buttons_ex = (have_function[8]) ? rna_Node_draw_buttons_ext : nullptr;
1951 nt->
labelfunc = (have_function[9]) ? rna_Node_draw_label : nullptr;
1969 const char *identifier,
1975 bmain, reports, &RNA_Node, data, identifier, validate, call,
free);
1996 if (value_supported(item)) {
2005static bool geometry_node_asset_trait_flag_get(
PointerRNA *
ptr,
2015static void geometry_node_asset_trait_flag_set(
PointerRNA *
ptr,
2026static bool rna_GeometryNodeTree_is_tool_get(
PointerRNA *
ptr)
2030static void rna_GeometryNodeTree_is_tool_set(
PointerRNA *
ptr,
bool value)
2035static bool rna_GeometryNodeTree_is_modifier_get(
PointerRNA *
ptr)
2039static void rna_GeometryNodeTree_is_modifier_set(
PointerRNA *
ptr,
bool value)
2044static bool rna_GeometryNodeTree_is_mode_object_get(
PointerRNA *
ptr)
2048static void rna_GeometryNodeTree_is_mode_object_set(
PointerRNA *
ptr,
bool value)
2053static bool rna_GeometryNodeTree_is_mode_edit_get(
PointerRNA *
ptr)
2057static void rna_GeometryNodeTree_is_mode_edit_set(
PointerRNA *
ptr,
bool value)
2062static bool rna_GeometryNodeTree_is_mode_sculpt_get(
PointerRNA *
ptr)
2066static void rna_GeometryNodeTree_is_mode_sculpt_set(
PointerRNA *
ptr,
bool value)
2071static bool rna_GeometryNodeTree_is_type_mesh_get(
PointerRNA *
ptr)
2075static void rna_GeometryNodeTree_is_type_mesh_set(
PointerRNA *
ptr,
bool value)
2080static bool rna_GeometryNodeTree_is_type_curve_get(
PointerRNA *
ptr)
2084static void rna_GeometryNodeTree_is_type_curve_set(
PointerRNA *
ptr,
bool value)
2089static bool rna_GeometryNodeTree_is_type_point_cloud_get(
PointerRNA *
ptr)
2093static void rna_GeometryNodeTree_is_type_point_cloud_set(
PointerRNA *
ptr,
bool value)
2098static bool rna_GeometryNodeTree_use_wait_for_click_get(
PointerRNA *
ptr)
2102static void rna_GeometryNodeTree_use_wait_for_click_set(
PointerRNA *
ptr,
bool value)
2134static bool generic_attribute_type_supported_with_socket(
const EnumPropertyItem *item)
2140static const EnumPropertyItem *rna_GeometryNodeAttributeType_type_with_socket_itemf(
2145 generic_attribute_type_supported_with_socket);
2148static const EnumPropertyItem *rna_GeometryNodeAttributeDomain_attribute_domain_itemf(
2169 const char *identifier,
2175 bmain, reports, &RNA_ShaderNode, data, identifier, validate, call,
free);
2191 const char *identifier,
2197 bmain, reports, &RNA_CompositorNode, data, identifier, validate, call,
free);
2213 const char *identifier,
2219 bmain, reports, &RNA_TextureNode, data, identifier, validate, call,
free);
2235 const char *identifier,
2241 bmain, reports, &RNA_GeometryNode, data, identifier, validate, call,
free);
2257 const char *identifier,
2263 bmain, reports, &RNA_FunctionNode, data, identifier, validate, call,
free);
2285 bNode *parent =
static_cast<bNode *
>(value.data);
2321static bool allow_identifier_lookup(
const bNode &node)
2323 switch (node.type) {
2339 if (allow_identifier_lookup(node)) {
2341 if (socket->is_available()) {
2342 if (socket->identifier == key) {
2349 if (socket->is_available()) {
2350 if (socket->name == key) {
2381 bNode *parent =
static_cast<bNode *
>(value.data);
2411static void rna_Node_socket_value_update(
ID *
id,
bNode * ,
bContext *C)
2423static void rna_Node_name_set(
PointerRNA *
ptr,
const char *value)
2427 char oldname[
sizeof(node->name)];
2440static bool allow_changing_sockets(
bNode *node)
2451 const char *identifier,
2452 const bool use_multi_input)
2454 if (!allow_changing_sockets(node)) {
2462 if (sock ==
nullptr) {
2466 if (use_multi_input) {
2482 const char *identifier,
2483 const bool use_multi_input)
2485 if (!allow_changing_sockets(node)) {
2490 if (use_multi_input) {
2498 if (sock ==
nullptr) {
2509static void rna_Node_socket_remove(
2512 if (!allow_changing_sockets(node)) {
2532 if (!allow_changing_sockets(node)) {
2540 for (sock =
static_cast<bNodeSocket *
>(node->inputs.first); sock; sock = nextsock) {
2541 nextsock = sock->
next;
2551 if (!allow_changing_sockets(node)) {
2559 for (sock =
static_cast<bNodeSocket *
>(node->outputs.first); sock; sock = nextsock) {
2560 nextsock = sock->
next;
2568static void rna_Node_inputs_move(
2571 if (!allow_changing_sockets(node)) {
2579 if (from_index == to_index) {
2582 if (from_index < 0 || to_index < 0) {
2587 if (to_index < from_index) {
2607static void rna_Node_outputs_move(
2610 if (!allow_changing_sockets(node)) {
2618 if (from_index == to_index) {
2621 if (from_index < 0 || to_index < 0) {
2626 if (to_index < from_index) {
2646static void rna_Node_width_range(
2651 *max = *softmax = node->typeinfo->maxwidth;
2654static void rna_Node_height_range(
2659 *max = *softmax = node->typeinfo->maxheight;
2662static void rna_Node_dimensions_get(
PointerRNA *
ptr,
float *value)
2670static void rna_NodeInternalSocketTemplate_name_get(
PointerRNA *
ptr,
char *value)
2674 strcpy(value, stemp->
name);
2677static int rna_NodeInternalSocketTemplate_name_length(
PointerRNA *
ptr)
2681 return strlen(stemp->
name);
2684static void rna_NodeInternalSocketTemplate_identifier_get(
PointerRNA *
ptr,
char *value)
2691static int rna_NodeInternalSocketTemplate_identifier_length(
PointerRNA *
ptr)
2698static int rna_NodeInternalSocketTemplate_type_get(
PointerRNA *
ptr)
2709 if (ntype && ntype->
inputs) {
2712 while (i < index && stemp->type >= 0) {
2716 if (i == index && stemp->
type >= 0) {
2728 if (ntype && ntype->
outputs) {
2731 while (i < index && stemp->type >= 0) {
2735 if (i == index && stemp->
type >= 0) {
2747 const char *disabled_hint;
2748 return ntype && (!ntype->
poll || ntype->
poll(ntype, ntree, &disabled_hint));
2751static bool rna_NodeInternal_poll_instance(
bNode *node,
bNodeTree *ntree)
2754 const char *disabled_hint;
2760 return !ntype->
poll || ntype->
poll(ntype, ntree, &disabled_hint);
2764static void rna_NodeInternal_update(
ID *
id,
bNode *node,
Main *bmain)
2773 if (node->typeinfo->draw_buttons) {
2775 node->typeinfo->draw_buttons(layout, C, &
ptr);
2781 if (node->typeinfo->draw_buttons_ex) {
2783 node->typeinfo->draw_buttons_ex(layout, C, &
ptr);
2785 else if (node->typeinfo->draw_buttons) {
2787 node->typeinfo->draw_buttons(layout, C, &
ptr);
2794 const char *identifier,
2800 bmain, reports, &RNA_NodeCustomGroup, data, identifier, validate, call,
free);
2813static StructRNA *rna_GeometryNodeCustomGroup_register(
Main *bmain,
2816 const char *identifier,
2822 bmain, reports, &RNA_GeometryNodeCustomGroup, data, identifier, validate, call,
free);
2841static StructRNA *rna_ShaderNodeCustomGroup_register(
Main *bmain,
2844 const char *identifier,
2850 bmain, reports, &RNA_ShaderNodeCustomGroup, data, identifier, validate, call,
free);
2867static StructRNA *rna_CompositorNodeCustomGroup_register(
Main *bmain,
2870 const char *identifier,
2876 bmain, reports, &RNA_CompositorNodeCustomGroup, data, identifier, validate, call,
free);
2892static void rna_CompositorNode_tag_need_exec(
bNode *node)
2925 const char *disabled_hint =
nullptr;
2934 node->id = &ngroup->
id;
2948 const char *disabled_hint =
nullptr;
2952static void rna_distance_matte_t1_set(
PointerRNA *
ptr,
float value)
2960static void rna_distance_matte_t2_set(
PointerRNA *
ptr,
float value)
2968static void rna_difference_matte_t1_set(
PointerRNA *
ptr,
float value)
2976static void rna_difference_matte_t2_set(
PointerRNA *
ptr,
float value)
2992 if (value < chroma->t2) {
3002 if (value > chroma->t1) {
3018 node->id =
static_cast<ID *
>(value.data);
3026 Image *ima =
reinterpret_cast<Image *
>(node->id);
3038 if (scene !=
nullptr && scene->nodetree !=
nullptr) {
3047 int i = 0, totitem = 0;
3053 if (rl->
name[0] ==
'\0') {
3076 const auto rotation_supported_mix = [&](
const EnumPropertyItem *item) ->
bool {
3096 Image *ima =
reinterpret_cast<Image *
>(node->id);
3104 if (ima ==
nullptr || ima->
rr ==
nullptr) {
3110 item = renderresult_layers_add_enum(rl);
3120 Image *ima =
reinterpret_cast<Image *
>(node->id);
3126 if (!ima || !(ima->
rr)) {
3136 Image *ima =
reinterpret_cast<Image *
>(node->id);
3142 if (!ima || !(ima->
rr)) {
3153 int i = 1, totitem = 0;
3162 if (rv->
name[0] ==
'\0') {
3184 Image *ima =
reinterpret_cast<Image *
>(node->id);
3192 if (ima ==
nullptr || ima->
rr ==
nullptr) {
3198 item = renderresult_views_add_enum(rv);
3211 Scene *sce =
reinterpret_cast<Scene *
>(node->id);
3215 if (sce ==
nullptr) {
3221 item = renderresult_layers_add_enum(rl);
3231 if (scene !=
nullptr && scene->nodetree !=
nullptr) {
3246 switch (node->custom1) {
3349static void rna_NodeColorBalance_input_whitepoint_get(
PointerRNA *
ptr,
float value[3])
3356static void rna_NodeColorBalance_input_whitepoint_set(
PointerRNA *
ptr,
const float value[3])
3363static void rna_NodeColorBalance_output_whitepoint_get(
PointerRNA *
ptr,
float value[3])
3370static void rna_NodeColorBalance_output_whitepoint_set(
PointerRNA *
ptr,
const float value[3])
3377static void rna_NodeCryptomatte_source_set(
PointerRNA *
ptr,
int value)
3380 if (node->id && node->custom1 != value) {
3384 node->custom1 = value;
3387static int rna_NodeCryptomatte_layer_name_get(
PointerRNA *
ptr)
3400static void rna_NodeCryptomatte_layer_name_set(
PointerRNA *
ptr,
int new_value)
3425 temp.
value = layer_index;
3427 temp.
name = layer->name;
3442 reinterpret_cast<Scene *
>(node->id) :
3452 rna_Node_scene_set(
ptr, value, reports);
3461 reinterpret_cast<Image *
>(node->id) :
3478 node->id =
static_cast<ID *
>(value.data);
3484 Image *image =
reinterpret_cast<Image *
>(value.owner_id);
3488static void rna_NodeCryptomatte_matte_get(
PointerRNA *
ptr,
char *value)
3493 strcpy(value, matte_id);
3502 int result = strlen(matte_id);
3507static void rna_NodeCryptomatte_matte_set(
PointerRNA *
ptr,
const char *value)
3536static bool rna_Node_pair_with_output(
3545 "Can't pair zone input node %s with %s because it does not have the same zone type",
3550 for (
const bNode *other_input_node : ntree->nodes_by_type(zone_type.input_idname)) {
3551 if (other_input_node != node) {
3555 "The output node %s is already paired with %s",
3557 other_input_node->name);
3571template<
typename Accessor>
3572static void rna_Node_ItemArray_remove(
ID *
id,
3576 typename Accessor::ItemT *item_to_remove)
3579 if (item_to_remove < *ref.items || item_to_remove >= *ref.
items + *ref.
items_num) {
3580 if constexpr (Accessor::has_name) {
3581 char **name_ptr = Accessor::get_name(*item_to_remove);
3582 if (name_ptr && *name_ptr) {
3602template<
typename Accessor>
static void rna_Node_ItemArray_clear(
ID *
id,
bNode *node,
Main *bmain)
3613template<
typename Accessor>
3614static void rna_Node_ItemArray_move(
3615 ID *
id,
bNode *node,
Main *bmain,
const int from_index,
const int to_index)
3619 if (from_index < 0 || to_index < 0 || from_index >= items_num || to_index >= items_num) {
3634 typename Accessor::ItemT *active_item =
nullptr;
3637 if (active_index >= 0 && active_index < items_num) {
3638 active_item = &(*ref.
items)[active_index];
3642template<
typename Accessor>
3647 using ItemT =
typename Accessor::ItemT;
3649 ItemT *item =
static_cast<ItemT *
>(value.data);
3657template<
typename Accessor>
3660 using ItemT =
typename Accessor::ItemT;
3662 ItemT &item = *
static_cast<ItemT *
>(
ptr->
data);
3670template<
typename Accessor>
3677 return itemf_function_check(
3683template<
typename Accessor>
3684static void rna_Node_ItemArray_item_name_set(
PointerRNA *
ptr,
const char *value)
3686 using ItemT =
typename Accessor::ItemT;
3688 ItemT &item = *
static_cast<ItemT *
>(
ptr->
data);
3694template<
typename Accessors>
3695static void rna_Node_ItemArray_item_color_get(
PointerRNA *
ptr,
float *values)
3697 using ItemT =
typename Accessors::ItemT;
3698 ItemT &item = *
static_cast<ItemT *
>(
ptr->
data);
3700 Accessors::get_socket_type(item), 0);
3704template<
typename Accessor>
3705typename Accessor::ItemT *rna_Node_ItemArray_new_with_socket_and_name(
3708 using ItemT =
typename Accessor::ItemT;
3737static const EnumPropertyItem *rna_NodeGeometryCaptureAttributeItem_data_type_itemf(
3764static int rna_NodeOutputFileSocket_find_node(
bNodeTree *ntree,
3773 for (sock =
static_cast<bNodeSocket *
>(node->inputs.first); sock; sock = sock->
next) {
3775 if (sockdata == data) {
3788static void rna_NodeOutputFileSlotFile_path_set(
PointerRNA *
ptr,
const char *value)
3795 if (rna_NodeOutputFileSocket_find_node(ntree, sockdata, &node, &sock)) {
3800static void rna_NodeOutputFileSlotLayer_name_set(
PointerRNA *
ptr,
const char *value)
3807 if (rna_NodeOutputFileSocket_find_node(ntree, sockdata, &node, &sock)) {
3820 im_format = &scene->r.im_format;
3837static void rna_ShaderNodeTexIES_mode_set(
PointerRNA *
ptr,
int value)
3842 if (nss->
mode != value) {
3848 Text *text =
reinterpret_cast<Text *
>(node->id);
3861static void rna_ShaderNodeScript_mode_set(
PointerRNA *
ptr,
int value)
3866 if (nss->
mode != value) {
3869 nss->
flag &= ~NODE_SCRIPT_AUTO_UPDATE;
3873 Text *text =
reinterpret_cast<Text *
>(node->id);
3894static void rna_ShaderNodeScript_bytecode_get(
PointerRNA *
ptr,
char *value)
3902static int rna_ShaderNodeScript_bytecode_length(
PointerRNA *
ptr)
3910static void rna_ShaderNodeScript_bytecode_set(
PointerRNA *
ptr,
const char *value)
3919 if (value && value[0]) {
3959static void rna_ShaderNode_is_active_output_set(
PointerRNA *
ptr,
bool value)
3967 if (other_node->type == node->type) {
3968 other_node->
flag &= ~NODE_DO_OUTPUT;
3974 node->flag &= ~NODE_DO_OUTPUT;
3978static void rna_GroupOutput_is_active_output_set(
PointerRNA *
ptr,
bool value)
3986 other_node->
flag &= ~NODE_DO_OUTPUT;
3992 node->flag &= ~NODE_DO_OUTPUT;
4013static void rna_ShaderNodePointDensity_psys_set(
PointerRNA *
ptr,
4022 if (ob && value.owner_id == &ob->
id) {
4030static int point_density_particle_color_source_from_shader(
4046static int point_density_vertex_color_source_from_shader(
4084 pd->
color_source = point_density_particle_color_source_from_shader(shader_point_density);
4090 pd->
ob_color_source = point_density_vertex_color_source_from_shader(shader_point_density);
4101void rna_ShaderNodePointDensity_density_calc(
bNode *
self,
4117 *values_num = 4 * resolution * resolution * resolution;
4119 if (*values ==
nullptr) {
4120 *values =
static_cast<float *
>(
4121 MEM_mallocN(
sizeof(
float) * (*values_num),
"point density dynamic array"));
4129 *pd = blender::dna::shallow_zero_initialize();
4134void rna_ShaderNodePointDensity_density_minmax(
bNode *
self,
4152static int rna_NodeConvertColorSpace_from_color_space_get(
PointerRNA *
ptr)
4159static void rna_NodeConvertColorSpace_from_color_space_set(
PointerRNA *
ptr,
int value)
4165 if (name && name[0]) {
4169static int rna_NodeConvertColorSpace_to_color_space_get(
PointerRNA *
ptr)
4176static void rna_NodeConvertColorSpace_to_color_space_set(
PointerRNA *
ptr,
int value)
4182 if (name && name[0]) {
4187static void rna_reroute_node_socket_type_set(
PointerRNA *
ptr,
const char *value)
4195 if (socket_type ==
nullptr) {
4250 {0,
"PLACEHOLDER", 0,
"Placeholder",
""},
4251 {0,
nullptr, 0,
nullptr,
nullptr},
4255 {0,
"ALL", 0,
"All",
""},
4256 {0,
nullptr, 0,
nullptr,
nullptr},
4260 {0,
"PLACEHOLDER", 0,
"Placeholder",
""},
4261 {0,
nullptr, 0,
nullptr,
nullptr},
4265 {1,
"R", 0,
"R",
"Red"},
4266 {2,
"G", 0,
"G",
"Green"},
4267 {3,
"B", 0,
"B",
"Blue"},
4268 {0,
nullptr, 0,
nullptr,
nullptr},
4272 {0,
"X", 0,
"Flip X",
""},
4273 {1,
"Y", 0,
"Flip Y",
""},
4274 {2,
"XY", 0,
"Flip X & Y",
""},
4275 {0,
nullptr, 0,
nullptr,
nullptr},
4279 {0,
"ITUBT601", 0,
"ITU 601",
""},
4280 {1,
"ITUBT709", 0,
"ITU 709",
""},
4281 {2,
"JFIF", 0,
"JPEG",
""},
4282 {0,
nullptr, 0,
nullptr,
nullptr},
4292 "GGX with additional correction to account for multiple scattering, preserve energy and "
4293 "prevent unexpected darkening at high roughness"},
4294 {0,
nullptr, 0,
nullptr,
nullptr},
4299 "PHYSICAL_CONDUCTOR",
4301 "Physical Conductor",
4302 "Fresnel conductor based on the complex refractive index per color channel"},
4307 "An approximation of the Fresnel conductor curve based on the colors at perpendicular and "
4308 "near-grazing (roughly 82°) angles"},
4309 {0,
nullptr, 0,
nullptr,
nullptr},
4320 "GGX with additional correction to account for multiple scattering, preserve energy and "
4321 "prevent unexpected darkening at high roughness"},
4322 {0,
nullptr, 0,
nullptr,
nullptr},
4332 "GGX with additional correction to account for multiple scattering, preserve energy and "
4333 "prevent unexpected darkening at high roughness"},
4334 {0,
nullptr, 0,
nullptr,
nullptr},
4340 {0,
nullptr, 0,
nullptr,
nullptr},
4344 {
SHD_SHEEN_ASHIKHMIN,
"ASHIKHMIN", 0,
"Ashikhmin",
"Classic Ashikhmin velvet (legacy model)"},
4349 "Microflake-based model of multiple scattering between normal-oriented fibers"},
4350 {0,
nullptr, 0,
nullptr,
nullptr},
4356 {0,
nullptr, 0,
nullptr,
nullptr},
4364 "The light that bounces off the surface of the hair"},
4369 "The light that passes through the hair and exits on the other side"},
4370 {0,
nullptr, 0,
nullptr,
nullptr},
4378 "Near-field hair scattering model by Chiang et al. 2016, suitable for close-up looks, but is "
4379 "more noisy when viewing from a distance."},
4384 "Multi-scale hair scattering model by Huang et al. 2022, suitable for viewing both up close "
4385 "and from a distance, supports elliptical cross-sections and has more precise highlight in "
4386 "forward scattering directions."},
4387 {0,
nullptr, 0,
nullptr,
nullptr},
4394 "Absorption Coefficient",
4395 "Directly set the absorption coefficient \"sigma_a\" (this is not the most intuitive way to "
4400 "Melanin Concentration",
4401 "Define the melanin concentrations below to get the most realistic-looking hair (you can get "
4402 "the concentrations for different types of hair online)"},
4407 "Choose the color of your preference, and the shader will approximate the absorption "
4408 "coefficient to render lookalike hair"},
4409 {0,
nullptr, 0,
nullptr,
nullptr},
4415 {0,
nullptr, 0,
nullptr,
nullptr},
4421 {0,
nullptr, 0,
nullptr,
nullptr},
4430 "GGX with additional correction to account for multiple scattering, preserve energy and "
4431 "prevent unexpected darkening at high roughness"},
4432 {0,
nullptr, 0,
nullptr,
nullptr},
4439 "Christensen-Burley",
4440 "Approximation to physically based volume scattering"},
4445 "Volumetric approximation to physically based volume scattering, using the scattering radius "
4450 "Random Walk (Skin)",
4451 "Volumetric approximation to physically based volume scattering, with scattering radius "
4452 "automatically adjusted to match color textures. Designed for skin shading."},
4453 {0,
nullptr, 0,
nullptr,
nullptr}};
4460 "Cause the image to repeat horizontally and vertically"},
4465 "Extend by repeating edge pixels of the image"},
4470 "Clip to image size and set exterior pixels as transparent"},
4475 "Repeatedly flip the image horizontally and vertically"},
4476 {0,
nullptr, 0,
nullptr,
nullptr},
4481 "HENYEY_GREENSTEIN",
4483 "Henyey-Greenstein",
4484 "Henyey-Greenstein, default phase function for the scattering of light"},
4489 "Fournier-Forand phase function, used for the scattering of light in underwater "
4495 "Draine phase functions, mostly used for the scattering of light in interstellar dust"},
4500 "Rayleigh phase function, mostly used for particles smaller than the wavelength of light, "
4501 "such as scattering of sunlight in earth's atmosphere"},
4506 "Approximation of Mie scattering in water droplets, used for scattering in clouds and fog"},
4507 {0,
nullptr, 0,
nullptr,
nullptr},
4521 prop,
"Active Output",
"True if this node is used as the active group output");
4534 prop,
nullptr,
"rna_NodeGroup_node_tree_set",
nullptr,
"rna_NodeGroup_node_tree_poll");
4542 const char *struct_name,
4543 const char *base_name,
4544 const char *ui_name,
4545 const char *ui_desc,
4546 const char *reg_func)
4600 {
CD_PROP_FLOAT,
"FLOAT", 0,
"Float",
"Floating-point value"},
4601 {
CD_PROP_FLOAT3,
"FLOAT_VECTOR", 0,
"Vector",
"3D vector with floating-point values"},
4602 {0,
nullptr, 0,
nullptr,
nullptr},
4649 {0,
nullptr, 0,
nullptr,
nullptr},
4694 prop,
"Rounding Mode",
"Method used to convert the float to an integer");
4812 prop,
"Node Output",
"For node-based textures, which output node to use");
4899 prop,
"Active Output",
"True if this node is used as the active output");
4907 prop,
"Target",
"Which renderer and viewport shading types to use the shaders for");
4951 "The attribute is associated with the object geometry, and its value "
4952 "varies from vertex to vertex, or within the object volume"},
4957 "The attribute is associated with the object or mesh data-block itself, "
4958 "and its value is uniform"},
4963 "The attribute is associated with the instancer particle system or object, "
4964 "falling back to the Object mode if the attribute isn't found, or the object "
4965 "is not instanced"},
4970 "The attribute is associated with the View Layer, Scene or World that is being rendered"},
4971 {0,
nullptr, 0,
nullptr,
nullptr},
5008 {
SHD_SKY_HOSEK,
"HOSEK_WILKIE", 0,
"Hosek / Wilkie",
"Hosek / Wilkie 2012"},
5010 {0,
nullptr, 0,
nullptr,
nullptr},
5012 static float default_dir[3] = {0.0f, 0.0f, 1.0f};
5040 prop,
"Ground Albedo",
"Ground color that is subtly reflected in the sky");
5081 "Density of air molecules.\n"
5082 "\u2022 0 - No air.\n"
5083 "\u2022 1 - Clear day atmosphere.\n"
5084 "\u2022 2 - Highly polluted day");
5092 "Density of dust molecules and water droplets.\n"
5093 "\u2022 0 - No dust.\n"
5094 "\u2022 1 - Clear day atmosphere.\n"
5095 "\u2022 5 - City like atmosphere.\n"
5096 "\u2022 10 - Hazy day");
5104 "Density of ozone layer.\n"
5105 "\u2022 0 - No ozone.\n"
5106 "\u2022 1 - Clear day atmosphere.\n"
5107 "\u2022 2 - City like atmosphere");
5115 {
SHD_INTERP_CLOSEST,
"Closest", 0,
"Closest",
"No interpolation (sample closest texel)"},
5117 {
SHD_INTERP_SMART,
"Smart", 0,
"Smart",
"Bicubic when magnifying, else bilinear (OSL only)"},
5118 {0,
nullptr, 0,
nullptr,
nullptr},
5128 "Equirectangular or latitude-longitude projection"},
5133 "Projection from an orthographic photo of a mirror ball"},
5134 {0,
nullptr, 0,
nullptr,
nullptr},
5166 "Parameters defining which layer, pass and frame of the image is displayed");
5177 "Use the 2D vector (X, Y) as input. The Z component is ignored."},
5179 {0,
nullptr, 0,
nullptr,
nullptr},
5200 "Image is projected flat using the X and Y coordinates of the texture vector"},
5205 "Image is projected using different components for each side of the object space bounding "
5211 "Image is projected spherically using the Z axis as central"},
5216 "Image is projected from the tube using the Z axis as central"},
5217 {0,
nullptr, 0,
nullptr,
nullptr},
5236 prop,
"Projection",
"Method to project 2D image on object with a 3D texture vector");
5247 prop,
"Projection Blend",
"For box projection, amount of blend to use between sides");
5253 prop,
"Extension",
"How the image is extrapolated past its original bounds");
5263 "Parameters defining which layer, pass and frame of the image is displayed");
5282 {
SHD_INTERP_CLOSEST,
"Closest", 0,
"Closest",
"No interpolation (sample closest texel)"},
5284 {0,
nullptr, 0,
nullptr,
nullptr},
5299 prop,
"Extension",
"How the image is extrapolated past its original bounds");
5365 "Create a progression easing from one step to the next"},
5372 "Create a quadratic progression in the shape of a sphere"},
5374 {0,
nullptr, 0,
nullptr,
nullptr},
5395 "More uneven result (varies with location), more similar to a real terrain"},
5397 "RIDGED_MULTIFRACTAL",
5399 "Ridged Multifractal",
5400 "Create sharp peaks"},
5402 "HYBRID_MULTIFRACTAL",
5404 "Hybrid Multifractal",
5405 "Create peaks and valleys with different roughness values"},
5406 {
SHD_NOISE_FBM,
"FBM", 0,
"fBM",
"The standard fractal Perlin noise"},
5411 "Similar to Hybrid Multifractal creates a heterogeneous terrain, but with the likeness of "
5413 {0,
nullptr, 0,
nullptr,
nullptr},
5460 "How often rows are offset. A value of 2 gives an even/uneven pattern of rows.");
5468 prop,
"Squash Frequency",
"How often rows consist of \"squished\" bricks");
5476 prop,
"Offset Amount",
"Determines the brick offset of the various rows");
5486 "Factor to adjust the brick's width for particular rows determined by the Offset Frequency");
5511 {0,
nullptr, 0,
nullptr,
nullptr}};
5518 "Computes the distance to the closest point as well as its position and color"},
5523 "Computes the distance to the second closest point as well as its position and color"},
5528 "Smoothed version of F1. Weighted sum of neighbor voronoi cells."},
5533 "Computes the distance to the edge of the voronoi cell"},
5538 "Computes the radius of the n-sphere inscribed in the voronoi cell"},
5539 {0,
nullptr, 0,
nullptr,
nullptr}};
5557 prop,
"Distance Metric",
"The distance metric used to compute the texture");
5564 prop,
"Feature Output",
"The Voronoi feature that the node will compute");
5576 {
SHD_WAVE_BANDS,
"BANDS", 0,
"Bands",
"Use standard wave texture in bands"},
5577 {
SHD_WAVE_RINGS,
"RINGS", 0,
"Rings",
"Use wave texture in rings"},
5578 {0,
nullptr, 0,
nullptr,
nullptr},
5586 {0,
nullptr, 0,
nullptr,
nullptr},
5597 "Rings along spherical distance"},
5598 {0,
nullptr, 0,
nullptr,
nullptr},
5605 {0,
nullptr, 0,
nullptr,
nullptr},
5660 prop,
"Object",
"Use coordinates from this object (for object texture coordinates output)");
5666 prop,
"From Instancer",
"Use the parent of the instance object if possible");
5679 "Transform a normal vector with unit length"},
5680 {0,
nullptr, 0,
nullptr,
nullptr},
5687 {0,
nullptr, 0,
nullptr,
nullptr},
5734 "Generate point density from a particle system"},
5739 "Generate point density from an object's vertices"},
5740 {0,
nullptr, 0,
nullptr,
nullptr},
5744 {
SHD_INTERP_CLOSEST,
"Closest", 0,
"Closest",
"No interpolation (sample closest texel)"},
5747 {0,
nullptr, 0,
nullptr,
nullptr},
5753 {0,
nullptr, 0,
nullptr,
nullptr},
5761 "Lifetime mapped as 0.0 to 1.0 intensity"},
5766 "Particle speed (absolute magnitude of velocity) mapped as 0.0 to 1.0 intensity"},
5768 "PARTICLE_VELOCITY",
5770 "Particle Velocity",
5771 "XYZ velocity mapped to RGB colors"},
5772 {0,
nullptr, 0,
nullptr,
nullptr},
5781 "Vertex group weight"},
5786 "XYZ normal vector mapped to RGB colors"},
5787 {0,
nullptr, 0,
nullptr,
nullptr},
5809 "rna_ShaderNodePointDensity_psys_get",
5810 "rna_ShaderNodePointDensity_psys_set",
5820 prop,
"Resolution",
"Resolution used by the texture holding the point density");
5827 prop,
"Radius",
"Radius from the shaded sample to look for points within");
5856 func =
RNA_def_function(srna,
"cache_point_density",
"rna_ShaderNodePointDensity_density_cache");
5860 func =
RNA_def_function(srna,
"calc_point_density",
"rna_ShaderNodePointDensity_density_calc");
5864 parm =
RNA_def_float_array(func,
"rgba_values", 1,
nullptr, 0, 0,
"",
"RGBA Values", 0, 0);
5869 srna,
"calc_point_density_minmax",
"rna_ShaderNodePointDensity_density_minmax");
5946 prop,
"Subsurface Method",
"Method for rendering subsurface scattering");
5990 prop,
"Invert",
"Invert the bump mapping direction to push into the surface instead of out");
6024 prop,
"Color Parametrization",
"Select the shader's color parametrization");
6037 prop,
"From Instancer",
"Use the parent of the instance object if possible");
6069 prop,
"Use Tips",
"Lower half of the texture is for tips of the stroke");
6076 {
SHD_SPACE_TANGENT,
"TANGENT", 0,
"Tangent Space",
"Tangent space normal mapping"},
6077 {
SHD_SPACE_OBJECT,
"OBJECT", 0,
"Object Space",
"Object space normal mapping"},
6078 {
SHD_SPACE_WORLD,
"WORLD", 0,
"World Space",
"World space normal mapping"},
6082 "Blender Object Space",
6083 "Object space normal mapping, compatible with Blender render baking"},
6087 "Blender World Space",
6088 "World space normal mapping, compatible with Blender render baking"},
6089 {0,
nullptr, 0,
nullptr,
nullptr},
6115 "Displacement is in object space, affected by object scale"},
6120 "Displacement is in world space, not affected by object scale"},
6121 {0,
nullptr, 0,
nullptr,
nullptr},
6142 "Tangent space vector displacement mapping"},
6143 {
SHD_SPACE_OBJECT,
"OBJECT", 0,
"Object Space",
"Object space vector displacement mapping"},
6144 {
SHD_SPACE_WORLD,
"WORLD", 0,
"World Space",
"World space vector displacement mapping"},
6145 {0,
nullptr, 0,
nullptr,
nullptr},
6162 {
SHD_TANGENT_RADIAL,
"RADIAL", 0,
"Radial",
"Radial tangent around the X, Y or Z axis"},
6164 {0,
nullptr, 0,
nullptr,
nullptr},
6171 {0,
nullptr, 0,
nullptr,
nullptr},
6225 prop,
"Only Local",
"Only consider the object itself when computing AO");
6262 prop,
"Source",
"Whether the IES file is loaded from disk or from a text data-block");
6288 {0,
nullptr, 0,
nullptr,
nullptr},
6330 "Automatically update the shader when the .osl file changes (external scripts only)");
6334 "rna_ShaderNodeScript_bytecode_get",
6335 "rna_ShaderNodeScript_bytecode_length",
6336 "rna_ShaderNodeScript_bytecode_set");
6342 prop,
"Bytecode Hash",
"Hash of compile bytecode, for quick equality checking");
6351 func =
RNA_def_function(srna,
"find_socket",
"rna_ShaderNodeScript_find_socket");
6353 parm =
RNA_def_string(func,
"name",
nullptr, 0,
"Socket name",
"");
6355 RNA_def_boolean(func,
"is_output",
false,
"Output",
"Whether the socket is an output");
6359 func =
RNA_def_function(srna,
"add_socket",
"rna_ShaderNodeScript_add_socket");
6366 RNA_def_boolean(func,
"is_output",
false,
"Output",
"Whether the socket is an output");
6370 func =
RNA_def_function(srna,
"remove_socket",
"rna_ShaderNodeScript_remove_socket");
6412 {0,
nullptr, 0,
nullptr,
nullptr},
6419 {0,
nullptr, 0,
nullptr,
nullptr},
6426 prop,
"Variable Size",
"Support variable blur per pixel when using an image for size input");
6432 prop,
"Extend Bounds",
"Extend bounds of the input image to fully fit blurred image");
6452 prop,
"Relative",
"Use relative (percent) values to define blur radius");
6581 "Minimum speed for a pixel to be blurred (used to separate background from foreground)");
6597 "Scaling factor for motion vectors (actually, 'shutter speed', in frames)");
6603 prop,
"Curved",
"Interpolate between frames in a Bézier curve, rather than linearly");
6616 "Multiply the input image's RGBA channels by the alpha input value"},
6621 "Replace the input image's alpha channel by the alpha input value"},
6622 {0,
nullptr, 0,
nullptr,
nullptr},
6643 {0,
nullptr, 0,
nullptr,
nullptr},
6661 prop,
"Frames",
"Number of images of a movie to use");
6671 "Global starting frame of the movie/sequence, assuming first picture has a #1");
6679 prop,
"Offset",
"Offset the number of the frame to use in the animation");
6685 prop,
"Cyclic",
"Cycle the images in the movie");
6731 {0,
nullptr, 0,
nullptr,
nullptr},
6746 "Straight Alpha Output",
6747 "Put node output buffer to straight alpha instead of premultiplied");
6787 srna,
"Output File Slot",
"Single layer file slot of the file output node");
6797 prop,
"Save as Render",
"Apply render part of display transform when saving byte image");
6819 srna,
"Output File Layer Slot",
"Multilayer slot of the file output node");
6830 const char *struct_name)
6847 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"New socket");
6856 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"The socket to remove");
6867 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the socket to move", 0, 10000);
6870 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the socket", 0, 10000);
6896 prop,
"Save as Render",
"Apply render part of display transform when saving byte image");
6905 "rna_NodeOutputFile_slots_begin",
6906 "rna_iterator_listbase_next",
6907 "rna_iterator_listbase_end",
6908 "rna_NodeOutputFile_slot_file_get",
6919 "rna_NodeOutputFile_slots_begin",
6920 "rna_iterator_listbase_next",
6921 "rna_iterator_listbase_end",
6922 "rna_NodeOutputFile_slot_layer_get",
6941 {0,
nullptr, 0,
nullptr,
nullptr},
7011 prop,
"Neighbor",
"Threshold for the number of neighbor pixels that must match");
7024 {0,
nullptr, 0,
nullptr,
nullptr},
7032 {0,
nullptr, 0,
nullptr,
nullptr},
7088 prop,
"Falloff",
"Color distances below this additional threshold are partially keyed");
7122 {1,
"RGB", 0,
"RGB",
"RGB color space"},
7123 {2,
"YCC", 0,
"YCC",
"YCbCr suppression"},
7124 {0,
nullptr, 0,
nullptr,
nullptr},
7147 prop,
"Falloff",
"Color distances below this additional threshold are partially keyed");
7160 "rna_NodeConvertColorSpace_from_color_space_get",
7161 "rna_NodeConvertColorSpace_from_color_space_set",
7162 "rna_NodeConvertColorSpace_color_space_itemf");
7170 "rna_NodeConvertColorSpace_to_color_space_get",
7171 "rna_NodeConvertColorSpace_to_color_space_set",
7172 "rna_NodeConvertColorSpace_color_space_itemf");
7182 {1,
"R", 0,
"R",
"Red spill suppression"},
7183 {2,
"G", 0,
"G",
"Green spill suppression"},
7184 {3,
"B", 0,
"B",
"Blue spill suppression"},
7185 {0,
nullptr, 0,
nullptr,
nullptr},
7189 {0,
"R", 0,
"R",
"Limit by red"},
7190 {1,
"G", 0,
"G",
"Limit by green"},
7191 {2,
"B", 0,
"B",
"Limit by blue"},
7192 {0,
nullptr, 0,
nullptr,
nullptr},
7196 {0,
"SIMPLE", 0,
"Simple",
"Simple limit algorithm"},
7197 {1,
"AVERAGE", 0,
"Average",
"Average limit algorithm"},
7198 {0,
nullptr, 0,
nullptr,
nullptr},
7298 prop,
"Acceptance",
"Tolerance for a color to be considered a keying color");
7306 prop,
"Cutoff",
"Tolerance below which colors will be considered as exact matches");
7325 prop,
"Shadow Adjust",
"Adjusts the brightness of any shadows captured");
7338 {0,
nullptr, 0,
nullptr,
nullptr},
7342 {0,
"SINGLE", 0,
"Single",
"Limit by single channel"},
7343 {1,
"MAX", 0,
"Max",
"Limit by maximum of other channels"},
7344 {0,
nullptr, 0,
nullptr,
nullptr},
7441 {0,
"BLEED_OUT", 0,
"Bleed Out",
"Allow mask pixels to bleed along edges"},
7442 {1,
"KEEP_IN", 0,
"Keep In",
"Restrict mask pixels from touching edges"},
7443 {0,
nullptr, 0,
nullptr,
nullptr},
7447 {0,
"ALL", 0,
"All",
"All pixels on inner mask edge are considered during mask calculation"},
7452 "Only inner mask pixels adjacent to outer mask pixels are considered during mask "
7454 {0,
nullptr, 0,
nullptr,
nullptr},
7477 {0,
nullptr, 0,
nullptr,
nullptr},
7499 {8,
"OCTAGON", 0,
"Octagonal",
"8 sides"},
7500 {7,
"HEPTAGON", 0,
"Heptagonal",
"7 sides"},
7501 {6,
"HEXAGON", 0,
"Hexagonal",
"6 sides"},
7502 {5,
"PENTAGON", 0,
"Pentagonal",
"5 sides"},
7503 {4,
"SQUARE", 0,
"Square",
"4 sides"},
7504 {3,
"TRIANGLE", 0,
"Triangular",
"3 sides"},
7505 {0,
"CIRCLE", 0,
"Circular",
""},
7506 {0,
nullptr, 0,
nullptr,
nullptr},
7516 prop,
"Scene",
"Scene from which to select the active camera (render scene if undefined)");
7536 prop,
"Gamma Correction",
"Enable gamma correction before and after main process");
7546 "Amount of focal blur, 128 (infinity) is perfect focus, half the value doubles "
7562 "CoC radius threshold, prevents background bleed on in-focus midground, 0 is disabled");
7574 "Disable when using an image as input instead of actual z-buffer "
7575 "(auto enabled if node not image based, eg. time node)");
7584 "Scale the Z input when not using a z-buffer, controls maximum blur designated "
7585 "by the color white or input value 1");
7748 {0,
"STRAIGHT_TO_PREMUL", 0,
"To Premultiplied",
"Convert straight to premultiplied"},
7749 {1,
"PREMUL_TO_STRAIGHT", 0,
"To Straight",
"Convert premultiplied to straight"},
7750 {0,
nullptr, 0,
nullptr,
nullptr},
7757 prop,
"Mapping",
"Conversion between premultiplied alpha and key alpha");
7771 {0,
nullptr, 0,
nullptr,
nullptr},
7775 {0,
"HIGH", 0,
"High",
""},
7776 {1,
"MEDIUM", 0,
"Medium",
""},
7777 {2,
"LOW", 0,
"Low",
""},
7778 {0,
nullptr, 0,
nullptr,
nullptr},
7795 "If not set to high quality, the effect will be applied to a low-res copy "
7796 "of the source image");
7811 "Amount of Color Modulation, modulates colors of streaks and ghosts for "
7812 "a spectral dispersion effect");
7819 prop,
"Mix",
"-1 is original image only, 0 is exact 50/50 mix, 1 is processed image only");
7828 "The glare filter will only be applied to pixels brighter than this value");
7860 "Glow/glare size (not actual size; relative to initial size of bright area of pixels)");
7874 "R/D Photoreceptor",
7875 "More advanced algorithm based on eye physiology, by Reinhard and Devlin"},
7876 {0,
"RH_SIMPLE", 0,
"Rh Simple",
"Simpler photographic algorithm by Reinhard"},
7877 {0,
nullptr, 0,
nullptr,
nullptr},
7900 "Normally always 1, but can be used as an extra control to alter the brightness curve");
7913 prop,
"Intensity",
"If less than zero, darkens image; otherwise, makes it brighter");
7932 prop,
"Color Correction",
"If 0, same for all channels; if 1, each independent");
7947 "Enable/disable projector mode (the effect is applied in horizontal direction only)");
7961 "For positive distortion factor only: scale image such that black areas are not visible");
7968 static float default_1[3] = {1.0f, 1.0f, 1.0f};
7973 "OFFSET_POWER_SLOPE",
7975 "Offset/Power/Slope (ASC-CDL)",
7976 "ASC-CDL standard color correction"},
7981 "Chromatic adaption from a different white point"},
7982 {0,
nullptr, 0,
nullptr,
nullptr},
8054 prop,
"Input Temperature",
"Color temperature of the input's white point");
8065 "Color tint of the input's white point (the default of 10 matches daylight)");
8071 "rna_NodeColorBalance_input_whitepoint_get",
8072 "rna_NodeColorBalance_input_whitepoint_set",
8075 "Input White Point",
8076 "The color which gets mapped to white "
8077 "(automatically converted to/from temperature and tint)");
8086 prop,
"Output Temperature",
"Color temperature of the output's white point");
8097 "Color tint of the output's white point (the default of 10 matches daylight)");
8103 "rna_NodeColorBalance_output_whitepoint_get",
8104 "rna_NodeColorBalance_output_whitepoint_set",
8107 "Output White Point",
8108 "The color which gets white gets mapped to "
8109 "(automatically converted to/from temperature and tint)");
8131 prop,
"Use Alpha",
"Take alpha channel into account when doing the Z operation");
8139 "Anti-alias the z-buffer to try to avoid artifacts, mostly useful for Blender renders");
8162 {0,
nullptr, 0,
nullptr,
nullptr},
8216 prop,
"Invert",
"Invert stabilization to re-introduce motion to the frame");
8225 {0,
"UNDISTORT", 0,
"Undistort",
""},
8226 {1,
"DISTORT", 0,
"Distort",
""},
8227 {0,
nullptr, 0,
nullptr,
nullptr},
8250 {0,
"SCENE", 0,
"Scene Size",
""},
8256 "Pixel size scaled by scene percentage"},
8257 {0,
nullptr, 0,
nullptr,
nullptr},
8294 prop,
"Size Source",
"Where to get the mask size from for aspect/size information");
8324 {0,
"ADD", 0,
"Add",
""},
8325 {1,
"SUBTRACT", 0,
"Subtract",
""},
8326 {2,
"MULTIPLY", 0,
"Multiply",
""},
8327 {3,
"NOT", 0,
"Not",
""},
8328 {0,
nullptr, 0,
nullptr,
nullptr},
8434 prop,
"Variable Size",
"Support variable blur per pixel when using an image for size input");
8440 prop,
"Extend Bounds",
"Extend bounds of the input image to fully fit blurred image");
8450 "Amount of focal blur, 128 (infinity) is perfect focus, half the value doubles "
8704 "Colors are treated alpha premultiplied, or colors output straight (alpha gets set to 1)");
8717 "Colors are treated alpha premultiplied, or colors output straight (alpha gets set to 1)");
8759 "Balance between two non-primary channels primary channel is comparing against");
8774 "Balance between non-key colors used to detect amount of key color to be removed");
8783 "Value of non-scaled matte pixel which considers as fully background pixel");
8792 "Value of non-scaled matte pixel which considers as fully foreground pixel");
8799 prop,
"Pre Blur",
"Chroma pre-blur size which applies before running keyer");
8806 prop,
"Post Blur",
"Matte blur size which applies after clipping and dilate/eroding");
8819 prop,
"Edge Kernel Radius",
"Radius of kernel used to detect whether pixel belongs to edge");
8827 "Edge Kernel Tolerance",
8828 "Tolerance to pixels inside kernel which are treating as belonging to the same plane");
8855 "Output absolute position of a marker"},
8860 "Output position of a marker relative to first marker of a track"},
8865 "Output position of a marker relative to marker at given frame number"},
8870 "Output absolute position of a marker at given frame number"},
8871 {0,
nullptr, 0,
nullptr,
nullptr},
8926 {
CMP_NODE_WRAP_X,
"XAXIS", 0,
"X Axis",
"Wrap all pixels on the X axis"},
8927 {
CMP_NODE_WRAP_Y,
"YAXIS", 0,
"Y Axis",
"Wrap all pixels on the Y axis"},
8928 {
CMP_NODE_WRAP_XY,
"BOTH", 0,
"Both Axes",
"Wrap all pixels on both axes"},
8929 {0,
nullptr, 0,
nullptr,
nullptr},
8936 {0,
nullptr, 0,
nullptr,
nullptr},
8954 "Use relative (fraction of input image size) values to define translation");
9016 prop,
"Source",
"Source point of rays as a factor of the image width and height");
9048 static float default_1[3] = {1.0f, 1.0f, 1.0f};
9052 "rna_NodeCryptomatte_matte_get",
9053 "rna_NodeCryptomatte_matte_length",
9054 "rna_NodeCryptomatte_matte_set");
9056 prop,
"Matte Objects",
"List of object and material crypto IDs to include in matte");
9064 prop,
"Add",
"Add object or material to matte, by picking a color from the Pick output");
9075 "Remove object or material from matte, by picking a color from the Pick output");
9095 "Use Cryptomatte passes from a render"},
9100 "Use Cryptomatte passes from an image"},
9101 {0,
nullptr, 0,
nullptr,
nullptr}};
9112 prop,
"rna_NodeCryptomatte_scene_get",
"rna_NodeCryptomatte_scene_set",
nullptr,
nullptr);
9121 "rna_NodeCryptomatte_image_get",
9122 "rna_NodeCryptomatte_image_set",
9124 "rna_NodeCryptomatte_image_poll");
9137 "rna_NodeCryptomatte_layer_name_get",
9138 "rna_NodeCryptomatte_layer_name_set",
9139 "rna_NodeCryptomatte_layer_name_itemf");
9167 "No prefiltering, use when guiding passes are noise-free"},
9172 "Denoise image and guiding passes together. Improves quality when guiding passes are noisy "
9173 "using least amount of extra processing time."},
9178 "Prefilter noisy guiding passes before denoising image. Improves quality when guiding "
9179 "passes are noisy using extra processing time."},
9180 {0,
nullptr, 0,
nullptr,
nullptr}};
9204 {0,
"CLASSIC", 0,
"Classic",
"Fast but less accurate variation"},
9205 {1,
"ANISOTROPIC", 0,
"Anisotropic",
"Accurate but slower variation"},
9206 {0,
nullptr, 0,
nullptr,
nullptr},
9220 "Uses a more precise but slower method. Use if the output contains undesirable noise.");
9229 "Controls the uniformity of the direction of the filter. Higher values "
9230 "produces more uniform directions.");
9239 "Controls the sharpness of the filter. 0 means completely smooth while "
9240 "1 means completely sharp.");
9250 "Controls how directional the filter is. 0 means the filter is completely omnidirectional "
9251 "while 2 means it is maximally directed along the edges of the image.");
9267 "Threshold to detect edges (smaller threshold makes more sensitive detection)");
9277 "How much to eliminate spurious edges to avoid artifacts (the larger value makes less "
9278 "active; the value 2.0, for example, means discard a detected edge if there is a "
9279 "neighboring edge that has 2.0 times bigger contrast than the current one)");
9320 prop,
"Image User",
"Parameters defining the image duration, offset and related settings");
9332 prop,
"Offset Amount",
"Determines the brick offset of the various rows");
9347 "Factor to adjust the brick's width for particular rows determined by the Offset Frequency");
9367 "Find sample positions on the curve using a factor of its total length"},
9372 "Find sample positions on the curve using a distance from its beginning"},
9373 {0,
nullptr, 0,
nullptr,
nullptr},
9388 "Sample lengths based on the total length of all curves, rather than "
9389 "using a length inside each selected curve");
9396 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeType_type_with_socket_itemf");
9422 static const EnumPropertyItem rna_node_geometry_distribute_points_on_faces_mode_items[] = {
9427 "Distribute points randomly on the surface"},
9432 "Distribute the points randomly on the surface while taking a minimum distance between "
9433 "points into account"},
9434 {0,
nullptr, 0,
nullptr,
nullptr},
9449 "Output the normal and rotation values that have been output "
9450 "before the node started taking smooth normals into account");
9487 prop,
"Paired Output",
"Zone output node that this input node is paired with");
9489 func =
RNA_def_function(srna,
"pair_with_output",
"rna_Node_pair_with_output");
9493 func,
"output_node",
"GeometryNode",
"Output Node",
"Zone output node to pair with");
9497 func,
"result",
false,
"Result",
"True if pairing the node was successful");
9523 const char *accessor,
9524 const bool add_socket_type)
9529 char name_set_func[128];
9530 SNPRINTF(name_set_func,
"rna_Node_ItemArray_item_name_set<%s>", accessor);
9532 char item_update_func[128];
9533 SNPRINTF(item_update_func,
"rna_Node_ItemArray_item_update<%s>", accessor);
9534 const char *item_update_func_ptr = allocator.
copy_string(item_update_func).
c_str();
9536 char socket_type_itemf[128];
9537 SNPRINTF(socket_type_itemf,
"rna_Node_ItemArray_socket_type_itemf<%s>", accessor);
9539 char color_get_func[128];
9540 SNPRINTF(color_get_func,
"rna_Node_ItemArray_item_color_get<%s>", accessor);
9549 if (add_socket_type) {
9565 prop,
"Color",
"Color of the corresponding socket type in the node editor");
9569 const char *item_name,
9570 const char *accessor_name)
9576 char remove_call[128];
9577 SNPRINTF(remove_call,
"rna_Node_ItemArray_remove<%s>", accessor_name);
9578 char clear_call[128];
9579 SNPRINTF(clear_call,
"rna_Node_ItemArray_clear<%s>", accessor_name);
9580 char move_call[128];
9581 SNPRINTF(move_call,
"rna_Node_ItemArray_move<%s>", accessor_name);
9586 parm =
RNA_def_pointer(func,
"item", item_name,
"Item",
"The item to remove");
9597 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the item to move", 0, 10000);
9600 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the item", 0, 10000);
9605 const char *item_name,
9606 const char *accessor_name)
9613 SNPRINTF(name,
"rna_Node_ItemArray_new_with_socket_and_name<%s>", accessor_name);
9623 "Socket type of the item");
9645 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
9649 "Attribute domain where the attribute is stored in the simulation state");
9652 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<SimulationItemsAccessor>");
9659 srna =
RNA_def_struct(brna,
"NodeGeometrySimulationOutputItems",
nullptr);
9664 srna,
"SimulationStateItem",
"SimulationItemsAccessor");
9690 "rna_Node_ItemArray_active_get<SimulationItemsAccessor>",
9691 "rna_Node_ItemArray_active_set<SimulationItemsAccessor>",
9712 srna =
RNA_def_struct(brna,
"NodeGeometryRepeatOutputItems",
nullptr);
9742 "rna_Node_ItemArray_active_get<RepeatItemsAccessor>",
9743 "rna_Node_ItemArray_active_set<RepeatItemsAccessor>",
9754 "Iteration index that is used by inspection features like the viewer "
9755 "node or socket inspection");
9766 srna,
"ForeachGeometryElementInputItemsAccessor",
true);
9773 srna =
RNA_def_struct(brna,
"NodeGeometryForeachGeometryElementInputItems",
nullptr);
9778 srna,
"ForeachGeometryElementInputItem",
"ForeachGeometryElementInputItemsAccessor");
9780 srna,
"ForeachGeometryElementInputItem",
"ForeachGeometryElementInputItemsAccessor");
9787 srna =
RNA_def_struct(brna,
"ForeachGeometryElementMainItem",
nullptr);
9792 srna,
"ForeachGeometryElementMainItemsAccessor",
true);
9799 srna =
RNA_def_struct(brna,
"NodeGeometryForeachGeometryElementMainItems",
nullptr);
9804 srna,
"ForeachGeometryElementMainItem",
"ForeachGeometryElementMainItemsAccessor");
9806 srna,
"ForeachGeometryElementMainItem",
"ForeachGeometryElementMainItemsAccessor");
9814 srna =
RNA_def_struct(brna,
"ForeachGeometryElementGenerationItem",
nullptr);
9819 srna,
"ForeachGeometryElementGenerationItemsAccessor",
true);
9827 "rna_Node_ItemArray_item_update<ForeachGeometryElementGenerationItemsAccessor>");
9834 srna =
RNA_def_struct(brna,
"NodeGeometryForeachGeometryElementGenerationItems",
nullptr);
9840 "ForeachGeometryElementGenerationItem",
9841 "ForeachGeometryElementGenerationItemsAccessor");
9843 "ForeachGeometryElementGenerationItem",
9844 "ForeachGeometryElementGenerationItemsAccessor");
9865 prop,
nullptr,
"generation_items.items",
"generation_items.items_num");
9899 "Iteration index that is used by inspection features like the viewer "
9900 "node or socket inspection");
9914 prop,
nullptr,
nullptr,
"rna_NodeGeometryCaptureAttributeItem_data_type_itemf");
9918 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<CaptureAttributeItemsAccessor>");
9928 srna,
"NodeGeometryCaptureAttributeItem",
"CaptureAttributeItemsAccessor");
9930 srna,
"NodeGeometryCaptureAttributeItem",
"CaptureAttributeItemsAccessor");
9955 "rna_Node_ItemArray_active_get<CaptureAttributeItemsAccessor>",
9956 "rna_Node_ItemArray_active_set<CaptureAttributeItemsAccessor>",
9967 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
9983 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
9986 "Attribute domain where the attribute is stored in the baked data");
9989 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<BakeItemsAccessor>");
9995 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<BakeItemsAccessor>");
10007 srna,
"NodeGeometryBakeItem",
"BakeItemsAccessor");
10033 "rna_Node_ItemArray_active_get<BakeItemsAccessor>",
10034 "rna_Node_ItemArray_active_set<BakeItemsAccessor>",
10072 parm =
RNA_def_pointer(func,
"item",
"IndexSwitchItem",
"Item",
"New item");
10117 "Rotate around an axis by an angle"},
10122 "Rotate around the X, Y, and Z axes"},
10123 {0,
nullptr, 0,
nullptr,
nullptr},
10131 "Rotate the input rotation in the local space of the object"},
10136 "Rotate the input rotation in its local space"},
10137 {0,
nullptr, 0,
nullptr,
nullptr},
10165 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeType_type_with_socket_itemf");
10174 prop,
nullptr,
nullptr,
"rna_GeometryNodeAttributeDomain_attribute_domain_itemf");
10182 "Clamp the indices to the size of the attribute domain instead of "
10183 "outputting a default value for invalid indices");
10214 static const EnumPropertyItem rna_node_geometry_string_to_curves_overflow_items[] = {
10219 "Let the text use more space than the specified height"},
10224 "Scale the text size to fit inside the width and height"},
10229 "Only output curves that fit within the width and height. Output the remainder to the "
10230 "\"Remainder\" output."},
10231 {0,
nullptr, 0,
nullptr,
nullptr},
10234 static const EnumPropertyItem rna_node_geometry_string_to_curves_align_x_items[] = {
10239 "Align text to the left"},
10244 "Align text to the center"},
10249 "Align text to the right"},
10252 ICON_ALIGN_JUSTIFY,
10254 "Align text to the left and the right"},
10259 "Align text to the left and the right, with equal character spacing"},
10260 {0,
nullptr, 0,
nullptr,
nullptr},
10263 static const EnumPropertyItem rna_node_geometry_string_to_curves_align_y_items[] = {
10268 "Align text to the top"},
10273 "Align text to the top line's baseline"},
10278 "Align text to the middle"},
10283 "Align text to the bottom line's baseline"},
10288 "Align text to the bottom"},
10289 {0,
nullptr, 0,
nullptr,
nullptr},
10292 static const EnumPropertyItem rna_node_geometry_string_to_curves_pivot_mode[] = {
10316 {0,
nullptr, 0,
nullptr,
nullptr},
10325 prop,
"Font",
"Font of the text. Falls back to the UI font by default.");
10337 prop,
"Textbox Overflow",
"Handle the text behavior when it doesn't fit in the text boxes");
10345 prop,
"Horizontal Alignment",
"Text horizontal alignment from the object center");
10353 prop,
"Vertical Alignment",
"Text vertical alignment from the object center");
10373 prop,
nullptr,
nullptr,
"rna_Node_ItemArray_item_name_set<MenuSwitchItemsAccessor>");
10377 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<MenuSwitchItemsAccessor>");
10383 prop,
NC_NODE |
NA_EDITED,
"rna_Node_ItemArray_item_update<MenuSwitchItemsAccessor>");
10395 srna,
"Enum Definition Items",
"Collection of items that make up an enum");
10403 parm =
RNA_def_pointer(func,
"item",
"NodeEnumItem",
"Item",
"New item");
10417 prop,
nullptr,
"enum_definition.items_array",
"enum_definition.items_num");
10431 "rna_Node_ItemArray_active_get<MenuSwitchItemsAccessor>",
10432 "rna_Node_ItemArray_active_set<MenuSwitchItemsAccessor>",
10443 prop,
"rna_NodeMenuSwitch_enum_definition_get",
nullptr,
nullptr,
nullptr);
10446 "Enum Definition (deprecated)",
10447 "The enum definition can now be accessed directly on the node. This "
10448 "exists for backward compatibility.");
10470 srna,
"rna_CompositorNode_register",
"rna_Node_unregister",
nullptr);
10473 func =
RNA_def_function(srna,
"tag_need_exec",
"rna_CompositorNode_tag_need_exec");
10528 srna =
RNA_def_struct(brna,
"NodeInternalSocketTemplate",
nullptr);
10533 "rna_NodeInternalSocketTemplate_name_get",
10534 "rna_NodeInternalSocketTemplate_name_length",
10541 "rna_NodeInternalSocketTemplate_identifier_get",
10542 "rna_NodeInternalSocketTemplate_identifier_length",
10568 func,
"If non-null output is returned, the node type can be added to the tree");
10571 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10574 func =
RNA_def_function(srna,
"poll_instance",
"rna_NodeInternal_poll_instance");
10576 func,
"If non-null output is returned, the node can be added to the tree");
10578 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10584 func,
"Update on node graph topology changes (adding or removing nodes and links)");
10588 func =
RNA_def_function(srna,
"draw_buttons",
"rna_NodeInternal_draw_buttons");
10599 func =
RNA_def_function(srna,
"draw_buttons_ext",
"rna_NodeInternal_draw_buttons_ext");
10615 const char *structtype = (in_out ==
SOCK_IN ?
"NodeInputs" :
"NodeOutputs");
10616 const char *uiname = (in_out ==
SOCK_IN ?
"Node Inputs" :
"Node Outputs");
10617 const char *newfunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_new" :
"rna_Node_outputs_new");
10618 const char *clearfunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_clear" :
"rna_Node_outputs_clear");
10619 const char *movefunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_move" :
"rna_Node_outputs_move");
10635 func,
"use_multi_input",
false,
"",
"Make the socket multi-input (valid for inputs only)");
10637 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"New socket");
10643 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"The socket to remove");
10654 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the socket to move", 0, 10000);
10657 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the socket", 0, 10000);
10669 {
NODE_CUSTOM,
"CUSTOM", 0,
"Custom",
"Custom Node"},
10670 {0,
nullptr, 0,
nullptr,
nullptr},
10678 "ERRORS_AND_WARNINGS",
10680 "Errors and Warnings",
10682 {0,
nullptr, 0,
nullptr,
nullptr},
10703 "Node type (deprecated, use bl_static_type or bl_idname for the actual identifier string)");
10750 "rna_NodeInputs_lookup_string",
10766 "rna_NodeOutputs_lookup_string",
10775 "rna_Node_internal_links_begin",
10776 "rna_iterator_array_next",
10777 "rna_iterator_array_end",
10778 "rna_iterator_array_get",
10785 prop,
"Internal Links",
"Internal input-to-output connections for muting");
10790 prop,
nullptr,
"rna_Node_parent_set",
nullptr,
"rna_Node_parent_poll");
10801 "Warning Propagation",
10802 "The kinds of messages that should be propagated from this node to the parent group node");
10850 func =
RNA_def_function(srna,
"socket_value_update",
"rna_Node_socket_value_update");
10856 func =
RNA_def_function(srna,
"is_registered_node_type",
"rna_Node_is_registered_node_type");
10920 func,
"If non-null output is returned, the node type can be added to the tree");
10923 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10928 func,
"If non-null output is returned, the node can be added to the tree");
10931 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10937 func,
"Update on node graph topology changes (adding or removing nodes and links)");
10944 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"Link",
"Node link that will be inserted");
10957 "Initialize a new instance of this node from an existing node");
10959 parm =
RNA_def_pointer(func,
"node",
"Node",
"Node",
"Existing node to copy");
10999 "debug_zone_body_lazy_function_graph",
11000 "rna_NodeTree_debug_zone_body_lazy_function_graph");
11002 func,
"Get the internal lazy-function graph for the body of this zone");
11010 srna,
"debug_zone_lazy_function_graph",
"rna_NodeTree_debug_zone_lazy_function_graph");
11084 "Multi Input Sort ID",
11085 "Used to sort multiple links coming into the same input. The highest ID is at the top.");
11088 srna,
"swap_multi_input_sort_id",
"rna_NodeLink_swap_multi_input_sort_id");
11090 func,
"Swap the order of two links connected to the same multi-input socket");
11096 "The other link. Must link to the same multi-input socket.");
11123 "Type of node to add (Warning: should be same as node.bl_idname, not node.type!)");
11132 parm =
RNA_def_pointer(func,
"node",
"Node",
"",
"The node to remove");
11143 prop,
"rna_NodeTree_active_node_get",
"rna_NodeTree_active_node_set",
nullptr,
nullptr);
11163 parm =
RNA_def_pointer(func,
"input",
"NodeSocket",
"",
"The input socket");
11165 parm =
RNA_def_pointer(func,
"output",
"NodeSocket",
"",
"The output socket");
11171 "Remove existing links if connection limit is exceeded");
11173 "handle_dynamic_sockets",
11175 "Handle Dynamic Sockets",
11176 "Handle node specific features like virtual sockets");
11178 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"",
"New node link");
11184 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"",
"The node link to remove");
11205 "Undefined type of nodes (can happen e.g. when a linked node tree goes missing)"},
11206 {
NTREE_CUSTOM,
"CUSTOM", ICON_NONE,
"Custom",
"Custom nodes"},
11207 {
NTREE_SHADER,
"SHADER", ICON_MATERIAL,
"Shader",
"Shader nodes"},
11208 {
NTREE_TEXTURE,
"TEXTURE", ICON_TEXTURE,
"Texture",
"Texture nodes"},
11209 {
NTREE_COMPOSIT,
"COMPOSITING", ICON_RENDERLAYERS,
"Compositing",
"Compositing nodes"},
11210 {
NTREE_GEOMETRY,
"GEOMETRY", ICON_GEOMETRY_NODES,
"Geometry",
"Geometry nodes"},
11211 {0,
nullptr, 0,
nullptr,
nullptr},
11218 "Node tree consisting of linked nodes used for shading, textures and compositing");
11228 prop,
"Color Tag",
"Color tag of the node group which influences the header color");
11235 prop,
"Default Group Node Width",
"The width for newly created group nodes");
11242 prop,
"",
"The current location (offset) of the view for this Node Tree");
11271 prop,
nullptr,
nullptr,
nullptr,
"rna_GPencil_datablocks_annotations_poll");
11283 "Node Tree type (deprecated, bl_idname is the actual node tree type identifier)");
11291 func =
RNA_def_function(srna,
"interface_update",
"rna_NodeTree_interface_update");
11296 func =
RNA_def_function(srna,
"contains_tree",
"rna_NodeTree_contains_tree");
11299 "Check if the node tree contains another. Used to avoid creating recursive node groups.");
11301 func,
"sub_tree",
"NodeTree",
"Node Tree",
"Node tree for recursive check");
11348 func,
"result_1",
"NodeTree",
"Node Tree",
"Active node tree from context");
11351 func,
"result_2",
"ID",
"Owner ID",
"ID data-block that owns the node tree");
11354 func,
"result_3",
"ID",
"From ID",
"Original ID data-block selected from the context");
11362 func,
"idname",
"NodeSocket",
MAX_NAME,
"Socket Type",
"Identifier of the socket type");
11367 srna,
"debug_lazy_function_graph",
"rna_NodeTree_debug_lazy_function_graph");
11383 srna,
"Compositor Node Tree",
"Node tree consisting of linked nodes used for compositing");
11390 prop,
"Viewer Region",
"Use boundaries for viewer nodes and composite backdrop");
11403 "Shader Node Tree",
11404 "Node tree consisting of linked nodes used for materials (and other shading data-blocks)");
11408 func =
RNA_def_function(srna,
"get_output_node",
"ntreeShaderOutputNode");
11410 "Return active shader output node for the specified target");
11424 srna,
"Texture Node Tree",
"Node tree consisting of linked nodes used for textures");
11436 srna,
"Geometry Node Tree",
"Node tree consisting of linked nodes used for geometries");
11445 prop,
"rna_GeometryNodeTree_is_tool_get",
"rna_GeometryNodeTree_is_tool_set");
11453 prop,
"rna_GeometryNodeTree_is_modifier_get",
"rna_GeometryNodeTree_is_modifier_set");
11461 prop,
"rna_GeometryNodeTree_is_mode_object_get",
"rna_GeometryNodeTree_is_mode_object_set");
11469 prop,
"rna_GeometryNodeTree_is_mode_edit_get",
"rna_GeometryNodeTree_is_mode_edit_set");
11477 prop,
"rna_GeometryNodeTree_is_mode_sculpt_get",
"rna_GeometryNodeTree_is_mode_sculpt_set");
11485 prop,
"rna_GeometryNodeTree_is_type_mesh_get",
"rna_GeometryNodeTree_is_type_mesh_set");
11493 prop,
"rna_GeometryNodeTree_is_type_curve_get",
"rna_GeometryNodeTree_is_type_curve_set");
11501 "rna_GeometryNodeTree_is_type_point_cloud_get",
11502 "rna_GeometryNodeTree_is_type_point_cloud_set");
11510 "Wait for mouse click input before running the operator from a menu");
11512 "rna_GeometryNodeTree_use_wait_for_click_get",
11513 "rna_GeometryNodeTree_use_wait_for_click_set");
11518 const char *struct_name,
11519 const char *base_name,
11528 if (
STREQ(base_name,
"Node")) {
11529 base_name =
"NodeInternal";
11535 func =
RNA_def_function(srna,
"is_registered_node_type",
"rna_Node_is_registered_node_type");
11544 func =
RNA_def_function(srna,
"input_template",
"rna_NodeInternal_input_template");
11555 func =
RNA_def_function(srna,
"output_template",
"rna_NodeInternal_output_template");
11617# define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
11619 srna = define_specific_node(brna, #Category #StructName, #Category, DefFunc); \
11620 if (ID == CMP_NODE_OUTPUT_FILE) { \
11622 def_cmp_output_file(brna, srna); \
11639 "ShaderNodeCustomGroup",
11641 "Shader Custom Group",
11642 "Custom Shader Group Node for Python nodes",
11643 "rna_ShaderNodeCustomGroup_register");
11645 "CompositorNodeCustomGroup",
11647 "Compositor Custom Group",
11648 "Custom Compositor Group Node for Python nodes",
11649 "rna_CompositorNodeCustomGroup_register");
11654 "Base node type for custom registered node group types",
11655 "rna_NodeCustomGroup_register");
11657 "GeometryNodeCustomGroup",
11659 "Geometry Custom Group",
11660 "Custom Geometry Group Node for Python nodes",
11661 "rna_GeometryNodeCustomGroup_register");
11680# 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)
Scene * CTX_data_scene(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)
const char * BKE_main_blendfile_path_from_global()
#define NODE_TYPES_BEGIN(ntype)
#define NODE_CLASS_OUTPUT
constexpr int GROUP_NODE_MIN_WIDTH
constexpr int GROUP_NODE_DEFAULT_WIDTH
#define SH_NODE_TEX_IMAGE
#define NODE_CUSTOM_GROUP
#define FN_NODE_RANDOM_VALUE
constexpr int GROUP_NODE_MAX_WIDTH
#define SH_NODE_MAP_RANGE
#define SH_NODE_TEX_ENVIRONMENT
#define NODE_GROUP_OUTPUT
#define NODE_TREE_TYPES_BEGIN(ntype)
#define NODE_SOCKET_TYPES_BEGIN(stype)
#define NODE_TREE_TYPES_END
#define NODE_SOCKET_TYPES_END
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
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain)
void BKE_texture_pointdensity_init_data(struct PointDensity *pd)
void BKE_texture_pointdensity_free_data(struct PointDensity *pd)
#define BLI_assert_msg(a, msg)
void BLI_kdtree_nd_ free(KDTree *tree)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
int BLI_listbase_count_at_most(const struct ListBase *listbase, int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
MINLINE void zero_v3(float r[3])
#define BLI_SCOPED_DEFER(function_to_defer)
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
int bool BLI_str_startswith(const char *__restrict str, const char *__restrict start) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
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_ID_CURVE_LEGACY
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define BLT_I18NCONTEXT_UNIT
#define BLT_I18NCONTEXT_ID_MOVIECLIP
#define BLT_I18NCONTEXT_ID_TEXTURE
#define BLT_I18NCONTEXT_EDITOR_FILEBROWSER
#define BLT_I18NCONTEXT_COLOR
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_id(const ID *id)
ID * DEG_get_evaluated_id(const Depsgraph *depsgraph, ID *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
@ SHD_ATTRIBUTE_VIEW_LAYER
@ SHD_ATTRIBUTE_INSTANCER
@ 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
@ 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
@ SHD_POINTDENSITY_COLOR_PARTSPEED
@ SHD_POINTDENSITY_COLOR_PARTVEL
@ SHD_POINTDENSITY_COLOR_PARTAGE
@ CMP_NODE_BLUR_ASPECT_NONE
@ SHD_WAVE_RINGS_DIRECTION_Z
@ SHD_WAVE_RINGS_DIRECTION_Y
@ SHD_WAVE_RINGS_DIRECTION_X
@ SHD_WAVE_RINGS_DIRECTION_SPHERICAL
@ 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
@ NODE_MATH_FLOORED_MODULO
GeometryNodeAssetTraitFlag
@ GEO_NODE_ASSET_POINT_CLOUD
@ GEO_NODE_ASSET_WAIT_FOR_CURSOR
@ GEO_NODE_ASSET_MODIFIER
@ SHD_PHASE_HENYEY_GREENSTEIN
@ SHD_PHASE_FOURNIER_FORAND
@ GEO_NODE_CURVE_HANDLE_RIGHT
@ GEO_NODE_CURVE_HANDLE_LEFT
@ CMP_NODE_CRYPTOMATTE_SOURCE_IMAGE
@ CMP_NODE_CRYPTOMATTE_SOURCE_RENDER
@ CMP_NODE_DILATE_ERODE_STEP
@ CMP_NODE_DILATE_ERODE_DISTANCE_FEATHER
@ CMP_NODE_DILATE_ERODE_DISTANCE_THRESHOLD
@ CMP_NODE_DILATE_ERODE_DISTANCE
@ CMP_NODE_SCALE_RENDER_SIZE_STRETCH
@ CMP_NODE_SCALE_RENDER_SIZE_FIT
@ CMP_NODE_SCALE_RENDER_SIZE_CROP
@ 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_SUBSURFACE_RANDOM_WALK_SKIN
@ SHD_SUBSURFACE_RANDOM_WALK
@ NODE_SCRIPT_AUTO_UPDATE
@ SHD_SPACE_BLENDER_OBJECT
@ SHD_SPACE_BLENDER_WORLD
@ SHD_PRINCIPLED_HAIR_HUANG
@ SHD_PRINCIPLED_HAIR_CHIANG
@ SHD_VECT_TRANSFORM_SPACE_WORLD
@ SHD_VECT_TRANSFORM_SPACE_OBJECT
@ SHD_VECT_TRANSFORM_SPACE_CAMERA
@ FN_NODE_ROTATE_EULER_TYPE_EULER
@ FN_NODE_ROTATE_EULER_TYPE_AXIS_ANGLE
@ SHD_PRINCIPLED_HAIR_REFLECTANCE
@ SHD_PRINCIPLED_HAIR_DIRECT_ABSORPTION
@ SHD_PRINCIPLED_HAIR_PIGMENT_CONCENTRATION
@ CMP_NODE_MAP_UV_FILTERING_NEAREST
@ CMP_NODE_MAP_UV_FILTERING_ANISOTROPIC
@ SHD_GLOSSY_ASHIKHMIN_SHIRLEY
@ CMP_NODE_CHANNEL_MATTE_CS_YUV
@ CMP_NODE_CHANNEL_MATTE_CS_RGB
@ CMP_NODE_CHANNEL_MATTE_CS_HSV
@ CMP_NODE_CHANNEL_MATTE_CS_YCC
@ SHD_POINTDENSITY_COLOR_VERTNOR
@ SHD_POINTDENSITY_COLOR_VERTWEIGHT
@ SHD_POINTDENSITY_COLOR_VERTCOL
@ GEO_NODE_CURVE_SAMPLE_FACTOR
@ GEO_NODE_CURVE_SAMPLE_LENGTH
@ CMP_NODE_PLANE_TRACK_DEFORM_FLAG_MOTION_BLUR
@ NODE_MAP_RANGE_SMOOTHERSTEP
@ NODE_MAP_RANGE_SMOOTHSTEP
@ GEO_NODE_BAKE_ITEM_IS_ATTRIBUTE
@ SHD_POINTDENSITY_SOURCE_PSYS
@ SHD_POINTDENSITY_SOURCE_OBJECT
@ CMP_NODE_MASK_FLAG_SIZE_FIXED
@ CMP_NODE_MASK_FLAG_NO_FEATHER
@ CMP_NODE_MASK_FLAG_SIZE_FIXED_SCENE
@ CMP_NODE_MASK_FLAG_MOTION_BLUR
#define CMP_NODE_PLANE_TRACK_DEFORM_MOTION_BLUR_SAMPLES_MAX
@ GEO_NODE_POINT_DISTRIBUTE_POINTS_ON_FACES_RANDOM
@ GEO_NODE_POINT_DISTRIBUTE_POINTS_ON_FACES_POISSON
#define SHD_SHEEN_MICROFIBER
@ CMP_NODEFLAG_BLUR_VARIABLE_SIZE
@ CMP_NODEFLAG_BLUR_EXTEND_BOUNDS
@ CMP_NODE_IMAGE_USE_STRAIGHT_OUTPUT
@ CMP_NODE_SETALPHA_MODE_REPLACE_ALPHA
@ CMP_NODE_SETALPHA_MODE_APPLY
@ NODE_MIX_MODE_NON_UNIFORM
@ SHD_PROJ_EQUIRECTANGULAR
@ GEO_NODE_GIZMO_COLOR_PRIMARY
@ GEO_NODE_GIZMO_COLOR_SECONDARY
#define CMP_NODE_MASK_MBLUR_SAMPLES_MAX
@ CMP_NODE_OUTPUT_IGNORE_ALPHA
@ 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_POINTDENSITY_SPACE_WORLD
@ SHD_POINTDENSITY_SPACE_OBJECT
@ SHD_NOISE_HYBRID_MULTIFRACTAL
@ SHD_NOISE_RIDGED_MULTIFRACTAL
@ SHD_NOISE_HETERO_TERRAIN
@ SHD_VORONOI_DISTANCE_TO_EDGE
@ SHD_VORONOI_N_SPHERE_RADIUS
@ SHD_VECT_TRANSFORM_TYPE_VECTOR
@ SHD_VECT_TRANSFORM_TYPE_NORMAL
@ SHD_VECT_TRANSFORM_TYPE_POINT
@ NODE_WARNING_PROPAGATION_NONE
@ NODE_WARNING_PROPAGATION_ONLY_ERRORS_AND_WARNINGS
@ NODE_WARNING_PROPAGATION_ONLY_ERRORS
@ NODE_WARNING_PROPAGATION_ALL
@ GEO_NODE_LINEAR_GIZMO_DRAW_STYLE_CROSS
@ GEO_NODE_LINEAR_GIZMO_DRAW_STYLE_BOX
@ GEO_NODE_LINEAR_GIZMO_DRAW_STYLE_ARROW
@ CMP_NODE_COLOR_BALANCE_LGG
@ CMP_NODE_COLOR_BALANCE_ASC_CDL
@ CMP_NODE_COLOR_BALANCE_WHITEPOINT
@ SHD_BLEND_QUADRATIC_SPHERE
@ FN_NODE_ROTATE_EULER_SPACE_OBJECT
@ FN_NODE_ROTATE_EULER_SPACE_LOCAL
@ CMP_NODE_SCALE_RENDER_SIZE
@ CMP_NODE_SCALE_RELATIVE
@ CMP_NODE_SCALE_ABSOLUTE
@ CMP_NODE_SCALE_RENDER_PERCENT
@ SHD_WAVE_BANDS_DIRECTION_Y
@ SHD_WAVE_BANDS_DIRECTION_X
@ SHD_WAVE_BANDS_DIRECTION_Z
@ SHD_WAVE_BANDS_DIRECTION_DIAGONAL
@ CMP_NODE_TRACK_POSITION_RELATIVE_START
@ CMP_NODE_TRACK_POSITION_ABSOLUTE_FRAME
@ CMP_NODE_TRACK_POSITION_RELATIVE_FRAME
@ CMP_NODE_TRACK_POSITION_ABSOLUTE
@ GEO_NODE_STRING_TO_CURVES_MODE_TRUNCATE
@ GEO_NODE_STRING_TO_CURVES_MODE_SCALE_TO_FIT
@ GEO_NODE_STRING_TO_CURVES_MODE_OVERFLOW
@ CMP_NODE_LEVLES_LUMINANCE
@ CMP_NODE_LEVLES_LUMINANCE_BT709
@ 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
@ 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_MAPPING_TYPE_POINT
@ NODE_MAPPING_TYPE_VECTOR
@ NODE_MAPPING_TYPE_TEXTURE
@ NODE_MAPPING_TYPE_NORMAL
@ 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
@ CMP_NODE_STABILIZE_FLAG_INVERSE
@ SHD_IMAGE_EXTENSION_MIRROR
@ SHD_IMAGE_EXTENSION_CLIP
@ SHD_IMAGE_EXTENSION_REPEAT
@ SHD_IMAGE_EXTENSION_EXTEND
@ NODE_COMPARE_LESS_EQUAL
@ NODE_COMPARE_COLOR_BRIGHTER
@ NODE_COMPARE_GREATER_EQUAL
@ NODE_COMPARE_GREATER_THAN
@ NODE_COMPARE_COLOR_DARKER
@ CMP_NODE_GLARE_SIMPLE_STAR
@ CMP_NODE_GLARE_FOG_GLOW
@ CMP_NODE_DENOISE_PREFILTER_FAST
@ CMP_NODE_DENOISE_PREFILTER_NONE
@ CMP_NODE_DENOISE_PREFILTER_ACCURATE
Object is a sort of wrapper for general info.
@ TEX_PD_COLOR_VERTWEIGHT
@ RPT_ERROR_INVALID_INPUT
void ED_node_tree_propagate_change(const bContext *C, Main *bmain, bNodeTree *ntree)
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)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
void rna_Node_socket_update(Main *bmain, Scene *scene, PointerRNA *ptr)
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)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders Vector Displace the surface along an arbitrary direction White Noise Return a random value or color based on an input seed Float Map an input float to a curve and outputs a float value def_sh_combsep_color
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position def_clamp
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels def_sh_vertex_color
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color def_vector_curve
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum def_vector_math
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise def_sh_tex_gradient
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces def_sh_script
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders def_sh_vector_displacement
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders Vector Displace the surface along an arbitrary direction White Noise Return a random value or color based on an input seed def_float_curve
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks def_sh_tex_coord
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value def_sh_normal_map
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a producing a negative Combine Generate a color from its and blue Hue Saturation Apply a color transformation in the HSV color model Specular Similar to the Principled BSDF node but uses the specular workflow instead of which functions by specifying the so the result may not be physically accurate def_sh_output
Group Output data from inside of a node group A color picker def_mix_rgb
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture def_sh_tex_gabor
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud def_sh_tex_wireframe
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector def_sh_tex_magic
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells def_sh_tex_brick
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components def_sh_bevel
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes def_sh_vect_transform
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture def_sh_tex_voronoi
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block def_sh_tex_image
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders Vector Displace the surface along an arbitrary direction def_sh_tex_white_noise
void ntreeTexCheckCyclics(struct bNodeTree *ntree)
#define RNA_POINTER_INVALIDATE(ptr)
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
void(*)(void *data) StructFreeFunc
int(*)(bContext *C, PointerRNA *ptr, FunctionRNA *func, ParameterList *list) StructCallbackFunc
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROPOVERRIDE_NO_COMPARISON
#define RNA_ENUM_ITEM_HEADING(name, description)
constexpr PointerRNA PointerRNA_NULL
#define ND_NODE_ASSET_DATA
StringRefNull copy_string(StringRef str)
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
const Depsgraph * depsgraph
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
RenderEngineType * RE_engines_find(const char *idname)
RenderEngine * RE_engine_create(RenderEngineType *type)
void RE_engine_free(RenderEngine *engine)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void node_tree_set_output(bNodeTree *ntree)
bool node_is_parent_and_child(const bNode *parent, const bNode *child)
const bNodeZoneType * zone_type_by_node_type(const int node_type)
void node_attach_node(bNodeTree *ntree, bNode *node, bNode *parent)
void node_set_active(bNodeTree *ntree, bNode *node)
void node_detach_node(bNodeTree *ntree, bNode *node)
const char * node_type_find_alias(const char *idname)
bool node_link_is_hidden(const bNodeLink *link)
void node_remove_socket_links(bNodeTree *ntree, bNodeSocket *sock)
void node_remove_node(Main *bmain, bNodeTree *ntree, bNode *node, bool do_id_user)
void node_update_asset_metadata(bNodeTree &node_tree)
bool node_group_poll(const bNodeTree *nodetree, const bNodeTree *grouptree, const char **r_disabled_hint)
bNodeLink * node_add_link(bNodeTree *ntree, bNode *fromnode, bNodeSocket *fromsock, bNode *tonode, bNodeSocket *tosock)
bool node_find_node_try(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
void node_tree_type_free_link(const bNodeTreeType *nt)
bNode * node_get_active(bNodeTree *ntree)
bNodeType * node_type_find(const char *idname)
bNode * node_add_node(const bContext *C, bNodeTree *ntree, const char *idname)
bNodeSocketType * node_socket_type_find(const char *idname)
const char * node_socket_type_label(const bNodeSocketType *stype)
void node_tree_type_add(bNodeTreeType *nt)
void node_remove_socket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
void node_remove_link(bNodeTree *ntree, bNodeLink *link)
const char * node_static_socket_type(int type, int subtype)
bNodeSocket * node_add_socket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, const char *idname, const char *identifier, const char *name)
bool node_set_selected(bNode *node, bool select)
void node_internal_links(bNode *node, bNodeLink **r_links, int *r_len)
void node_clear_active(bNodeTree *ntree)
void node_unregister_type(bNodeType *ntype)
void node_tag_update_id(bNode *node)
void node_register_type(bNodeType *ntype)
bool node_tree_contains_tree(const bNodeTree *tree_to_search_in, const bNodeTree *tree_to_search_for)
int node_socket_link_limit(const bNodeSocket *sock)
bNodeTreeType * node_tree_type_find(const char *idname)
int node_count_socket_links(const bNodeTree *ntree, const bNodeSocket *sock)
void node_type_base_custom(bNodeType *ntype, const char *idname, const char *name, const char *enum_name, short nclass)
void node_dimensions_get(const bNode *node, float *r_width, float *r_height)
bool node_tree_is_registered(const bNodeTree *ntree)
void node_unique_name(bNodeTree *ntree, bNode *node)
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)
Accessor::ItemT * add_item_with_socket_type_and_name(bNode &node, const eNodeSocketDatatype socket_type, const char *name)
bNode * find_node_by_item(bNodeTree &ntree, const typename Accessor::ItemT &item)
void ntreeCompositColorBalanceSyncFromLGG(bNodeTree *, bNode *node)
void ntreeCompositColorBalanceSyncFromCDL(bNodeTree *, bNode *node)
void register_node_type_cmp_custom_group(blender::bke::bNodeType *ntype)
void ntreeCompositCryptomatteSyncFromRemove(bNode *node)
void ntreeCompositCryptomatteSyncFromAdd(bNode *node)
void ntreeCompositOutputFileSetPath(bNode *node, bNodeSocket *sock, const char *name)
void ntreeCompositOutputFileSetLayer(bNode *node, bNodeSocket *sock, const char *name)
bNodeSocket * ntreeCompositOutputFileAddSocket(bNodeTree *ntree, bNode *node, const char *name, const ImageFormatData *im_format)
void ntreeCompositTagNeedExec(bNode *node)
void ntreeCompositUpdateRLayers(bNodeTree *ntree)
void register_node_type_geo_custom_group(blender::bke::bNodeType *ntype)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_parameter_list_free(ParameterList *parms)
void rna_iterator_listbase_begin(CollectionPropertyIterator *iter, ListBase *lb, IteratorSkipFunc skip)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
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)
PointerRNA rna_pointer_inherit_refine(const PointerRNA *ptr, StructRNA *type, void *data)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
void * rna_iterator_listbase_get(CollectionPropertyIterator *iter)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **r_value)
PointerRNA RNA_id_pointer_create(ID *id)
void rna_def_animdata_common(StructRNA *srna)
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_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_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
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_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)
PropertyRNA * RNA_def_float_array(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
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_axis_xy_items[]
const EnumPropertyItem rna_enum_node_socket_type_items[]
static void def_geo_string_to_curves(StructRNA *srna)
static const EnumPropertyItem sh_tex_prop_interpolation_items[]
static void def_tex_output(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_cmp_filter(StructRNA *srna)
static void def_principled(StructRNA *srna)
static StructRNA * define_specific_node(BlenderRNA *brna, const char *struct_name, const char *base_name, void(*def_func)(StructRNA *))
static void def_refraction(StructRNA *srna)
static const EnumPropertyItem node_subsurface_method_items[]
static const EnumPropertyItem node_script_mode_items[]
static void def_cmp_dblur(StructRNA *srna)
static const EnumPropertyItem prop_image_layer_items[]
static void def_node_image_user(StructRNA *srna)
static void def_cmp_double_edge_mask(StructRNA *srna)
static void def_sh_mix(StructRNA *srna)
static void def_cmp_flip(StructRNA *srna)
static EnumPropertyItem node_ies_mode_items[]
static void rna_def_texture_node(BlenderRNA *brna)
static void def_fn_input_int(StructRNA *srna)
static void def_rgb_curve(StructRNA *srna)
static void def_scatter(StructRNA *srna)
static const EnumPropertyItem prop_view_layer_items[]
static void rna_def_cmp_output_file_slots_api(BlenderRNA *brna, PropertyRNA *cprop, const char *struct_name)
static void def_cmp_rotate(StructRNA *srna)
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 void def_sh_tex_checker(StructRNA *srna)
static const EnumPropertyItem prop_image_view_items[]
static void rna_def_nodetree(BlenderRNA *brna)
static void def_cmp_alpha_over(StructRNA *srna)
static void rna_def_shader_node(BlenderRNA *brna)
static const EnumPropertyItem node_sampler_type_items[]
static void def_geo_curve_set_handle_type(StructRNA *srna)
static void def_cmp_switch_view(StructRNA *)
static void def_sh_uvalongstroke(StructRNA *srna)
static const EnumPropertyItem prop_shader_output_target_items[]
static const EnumPropertyItem node_metallic_distribution_items[]
static const EnumPropertyItem node_flip_items[]
static void def_cmp_bilateral_blur(StructRNA *srna)
static const EnumPropertyItem node_hair_items[]
static void def_cmp_zcombine(StructRNA *srna)
static void rna_def_compositor_node(BlenderRNA *brna)
static void def_cmp_boxmask(StructRNA *srna)
static void def_cmp_ycc(StructRNA *srna)
static void def_geo_curve_handle_type_selection(StructRNA *srna)
static void def_geo_image(StructRNA *srna)
static void def_time(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_brightcontrast(StructRNA *srna)
static void dev_cmd_transform(StructRNA *srna)
static void def_cmp_id_mask(StructRNA *srna)
static void def_cmp_denoise(StructRNA *srna)
static void def_fn_input_color(StructRNA *srna)
static void def_cmp_viewer(StructRNA *srna)
static void def_sh_tex(StructRNA *srna)
static void rna_def_nodetree_link_api(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_node(BlenderRNA *brna)
static void def_cmp_map_uv(StructRNA *srna)
static void def_geo_foreach_geometry_element_input(StructRNA *srna)
static const EnumPropertyItem rna_enum_node_tex_dimensions_items[]
static const EnumPropertyItem node_masktype_items[]
static void rna_def_cmp_output_file_slot_layer(BlenderRNA *brna)
static void def_cmp_premul_key(StructRNA *srna)
static void rna_def_geo_foreach_geometry_element_generation_item(BlenderRNA *brna)
static void def_sh_bump(StructRNA *srna)
static void def_sh_uvmap(StructRNA *srna)
static void def_math(StructRNA *srna)
static void def_sh_tangent(StructRNA *srna)
static const EnumPropertyItem node_metallic_fresnel_type_items[]
static void def_geo_distribute_points_on_faces(StructRNA *srna)
static void rna_def_simulation_state_item(BlenderRNA *brna)
static void def_cmp_set_alpha(StructRNA *srna)
static void def_fn_input_vector(StructRNA *srna)
const EnumPropertyItem rna_enum_node_group_color_tag_items[]
static void rna_def_internal_node(BlenderRNA *brna)
static void def_cmp_colorcorrection(StructRNA *srna)
static void def_geo_sample_index(StructRNA *srna)
static void def_cmp_sunbeams(StructRNA *srna)
static void def_cmp_levels(StructRNA *srna)
static void def_frame(StructRNA *srna)
const EnumPropertyItem rna_enum_mapping_type_items[]
static void def_sh_attribute(StructRNA *srna)
static const EnumPropertyItem node_scatter_phase_items[]
static void def_fn_input_rotation(StructRNA *srna)
static const EnumPropertyItem rna_enum_vector_rotate_type_items[]
const EnumPropertyItem rna_enum_node_combsep_color_items[]
static void def_cmp_blur(StructRNA *srna)
static void def_geo_index_switch(StructRNA *srna)
static void def_geo_menu_switch(StructRNA *srna)
static void def_cmp_composite(StructRNA *srna)
static void def_geo_curve_sample(StructRNA *srna)
static void def_fn_input_string(StructRNA *srna)
static void rna_def_geo_bake_item(BlenderRNA *brna)
static void def_geo_simulation_input(StructRNA *srna)
static const EnumPropertyItem node_cryptomatte_layer_name_items[]
static void def_common_zone_input(StructRNA *srna)
static void def_cmp_combsep_color(StructRNA *srna)
static const EnumPropertyItem node_ycc_items[]
static void rna_def_repeat_item(BlenderRNA *brna)
static void rna_def_geo_bake(StructRNA *srna)
static void def_cmp_lensdist(StructRNA *srna)
static void def_cmp_color_matte(StructRNA *srna)
static void def_geo_foreach_geometry_element_output(StructRNA *srna)
static void def_toon(StructRNA *srna)
static void def_sh_subsurface(StructRNA *srna)
static const EnumPropertyItem node_refraction_items[]
static void def_cmp_map_range(StructRNA *srna)
static void def_cmp_cryptomatte(StructRNA *srna)
static void def_texture(StructRNA *srna)
static void rna_def_function_node(BlenderRNA *brna)
static void def_cmp_defocus(StructRNA *srna)
static void def_cmp_invert(StructRNA *srna)
static void rna_def_node_instance_hash(BlenderRNA *brna)
static void def_cmp_scale(StructRNA *srna)
static void def_colorramp(StructRNA *srna)
static void def_sh_tex_noise(StructRNA *srna)
static const EnumPropertyItem prop_image_extension[]
static void def_cmp_split(StructRNA *srna)
static void def_sh_ambient_occlusion(StructRNA *srna)
static void def_fn_random_value(StructRNA *srna)
static void rna_def_geo_foreach_geometry_element_generation_items(BlenderRNA *brna)
static void def_geo_repeat_output(StructRNA *srna)
static void rna_def_menu_switch_item(BlenderRNA *brna)
static void def_cmp_render_layers(StructRNA *srna)
static void def_glossy(StructRNA *srna)
static void rna_def_cmp_output_file_slot_file(BlenderRNA *brna)
static void def_cmp_inpaint(StructRNA *srna)
static void def_sh_tex_ies(StructRNA *srna)
static void def_cmp_image(StructRNA *srna)
static void def_group_input(StructRNA *)
static void rna_def_texture_nodetree(BlenderRNA *brna)
static void def_cmp_keying(StructRNA *srna)
const EnumPropertyItem rna_enum_node_socket_in_out_items[]
static void def_sh_output_aov(StructRNA *srna)
void RNA_def_nodetree(BlenderRNA *brna)
static void def_sh_output_linestyle(StructRNA *srna)
static void def_tex_combsep_color(StructRNA *srna)
static void def_cmp_vector_blur(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_geo_image_texture(StructRNA *srna)
static void rna_def_index_switch_item(BlenderRNA *brna)
static void rna_def_geo_capture_attribute_item(BlenderRNA *brna)
static void def_cmp_pixelate(StructRNA *srna)
static void def_cmp_huecorrect(StructRNA *srna)
static void def_geo_simulation_output(StructRNA *srna)
static void rna_def_geo_repeat_output_items(BlenderRNA *brna)
static void def_sheen(StructRNA *srna)
const EnumPropertyItem rna_enum_node_geometry_curve_handle_side_items[]
const EnumPropertyItem rna_enum_node_socket_data_type_items[]
static void def_cmp_channel_matte(StructRNA *srna)
static void def_cmp_convert_color_space(StructRNA *srna)
static void def_reroute(StructRNA *srna)
const EnumPropertyItem rna_enum_node_vec_math_items[]
static void def_sh_displacement(StructRNA *srna)
const EnumPropertyItem rna_enum_geometry_nodes_linear_gizmo_draw_style_items[]
static void def_cmp_glare(StructRNA *srna)
static void def_sh_tex_sky(StructRNA *srna)
static void def_cmp_kuwahara(StructRNA *srna)
static void def_cmp_crop(StructRNA *srna)
static void def_map_range(StructRNA *srna)
static void def_float_to_int(StructRNA *srna)
static void def_hair(StructRNA *srna)
static void rna_def_geo_capture_attribute_items(BlenderRNA *brna)
static void rna_def_geometry_nodetree(BlenderRNA *brna)
static void rna_def_node_item_array_socket_item_common(StructRNA *srna, const char *accessor, const bool add_socket_type)
static void def_cmp_distance_matte(StructRNA *srna)
static void def_cmp_antialiasing(StructRNA *srna)
static void def_sh_vector_rotate(StructRNA *srna)
static void def_cmp_stabilize2d(StructRNA *srna)
static const EnumPropertyItem node_principled_hair_model_items[]
static void def_cmp_tonemap(StructRNA *srna)
static void def_cmp_trackpos(StructRNA *srna)
static void def_cmp_switch(StructRNA *srna)
static void def_cmp_luma_matte(StructRNA *srna)
static const EnumPropertyItem node_principled_hair_parametrization_items[]
static const EnumPropertyItem prop_tri_channel_items[]
const EnumPropertyItem rna_enum_node_geometry_mesh_circle_fill_type_items[]
static void def_sh_mapping(StructRNA *srna)
static void def_fn_rotate_euler(StructRNA *srna)
static const EnumPropertyItem node_glass_items[]
static void def_geo_input_material(StructRNA *srna)
static void def_cmp_bokehimage(StructRNA *srna)
static void def_cmp_moviedistortion(StructRNA *srna)
static void rna_def_geo_simulation_output_items(BlenderRNA *brna)
const EnumPropertyItem rna_enum_node_boolean_math_items[]
static void def_cmp_dilate_erode(StructRNA *srna)
static void def_cmp_planetrackdeform(StructRNA *srna)
static void rna_def_geo_index_switch_items(BlenderRNA *brna)
static void def_cmp_movieclip(StructRNA *srna)
static void def_hair_principled(StructRNA *srna)
const EnumPropertyItem rna_enum_geometry_nodes_gizmo_color_items[]
static void def_cmp_despeckle(StructRNA *srna)
static void rna_def_node_item_array_common_functions(StructRNA *srna, const char *item_name, const char *accessor_name)
const EnumPropertyItem rna_enum_node_map_range_items[]
const EnumPropertyItem rna_enum_node_float_compare_items[]
static void rna_def_geo_gizmo_transform(StructRNA *srna)
const EnumPropertyItem rna_enum_node_compare_operation_items[]
const EnumPropertyItem rna_enum_node_filter_items[]
static void rna_def_node_sockets_api(BlenderRNA *brna, PropertyRNA *cprop, int in_out)
static void def_cmp_ellipsemask(StructRNA *srna)
static void def_cmp_bokehblur(StructRNA *srna)
static void def_cmp_map_value(StructRNA *srna)
static void def_tex_bricks(StructRNA *srna)
static void def_cmp_diff_matte(StructRNA *srna)
static void def_cmp_keyingscreen(StructRNA *srna)
static void rna_def_geo_capture_attribute(StructRNA *srna)
static const EnumPropertyItem rna_enum_mix_data_type_items[]
static void def_cmp_cryptomatte_legacy(StructRNA *srna)
static void def_cmp_colorbalance(StructRNA *srna)
static void def_cmp_mask(StructRNA *srna)
static void rna_def_composite_nodetree(BlenderRNA *brna)
static void def_fn_input_bool(StructRNA *srna)
static void rna_def_geometry_node(BlenderRNA *brna)
static void def_tex_image(StructRNA *srna)
const EnumPropertyItem rna_enum_node_clamp_items[]
static const EnumPropertyItem node_sheen_items[]
static void def_metallic(StructRNA *srna)
static void rna_def_bake_items(BlenderRNA *brna)
static void def_cmp_chroma_matte(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_cmp_color_spill(StructRNA *srna)
static void def_cmp_cryptomatte_entry(BlenderRNA *brna)
static void def_sh_tex_wave(StructRNA *srna)
static void def_cmp_output_file(BlenderRNA *brna, StructRNA *srna)
static void rna_def_geo_foreach_geometry_element_main_items(BlenderRNA *brna)
static void def_sh_tex_pointdensity(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_repeat_input(StructRNA *srna)
static void rna_def_nodetree_nodes_api(BlenderRNA *brna, PropertyRNA *cprop)
static const EnumPropertyItem node_toon_items[]
static void def_glass(StructRNA *srna)
static void def_cmp_cryptomatte_common(StructRNA *srna)
static void rna_def_geo_menu_switch_items(BlenderRNA *brna)
static void def_cmp_translate(StructRNA *srna)
static void def_sh_tex_environment(StructRNA *srna)
static const EnumPropertyItem space_items[]
const EnumPropertyItem rna_enum_dummy_NULL_items[]
const EnumPropertyItem rna_enum_proportional_falloff_curve_only_items[]
static const EnumPropertyItem prop_noise_type[]
const EnumPropertyItem rna_enum_icon_items[]
bool RE_layers_have_name(RenderResult *result)
char from_color_space[64]
NodeCryptomatte_Runtime runtime
char vertex_attribute_name[68]
char vertex_attribute_name[68]
void(* update_script_node)(struct RenderEngine *engine, struct bNodeTree *ntree, struct bNode *node)
struct RenderLayer * next
struct bNodeSocket * next
bNodeTreeRuntimeHandle * runtime
struct GeometryNodeAssetTraits * geometry_node_asset_traits
bNodeTreeTypeHandle * typeinfo
bNodeTreeInterface tree_interface
bNodeTypeHandle * typeinfo
Compact definition of a node socket.
void(* update)(bNodeTree *ntree)
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)
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(* poll)(const bNodeType *ntype, const bNodeTree *nodetree, const char **r_disabled_hint)
bool(* insert_link)(bNodeTree *ntree, bNode *node, bNodeLink *link)
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 RE_point_density_free(PointDensity *pd)
void RE_point_density_minmax(Depsgraph *depsgraph, PointDensity *pd, float r_min[3], float r_max[3])
void RE_point_density_sample(Depsgraph *depsgraph, PointDensity *pd, const int resolution, float *values)
void RE_point_density_cache(Depsgraph *depsgraph, PointDensity *pd)
void WM_main_add_notifier(uint type, void *reference)