66 {
SOCK_IN,
"IN", 0,
"Input",
""}, {
SOCK_OUT,
"OUT", 0,
"Output",
""}, {0,
NULL, 0,
NULL,
NULL}};
118 "Transform a texture by inverse mapping the texture coordinate"},
123 "Transform a direction vector. Location is ignored"},
128 "Transform a unit normal vector. Location is ignored"},
137 "Rotate a point using axis angle"},
146 {0,
"", 0,
N_(
"Functions"),
""},
156 {
NODE_MATH_INV_SQRT,
"INVERSE_SQRT", 0,
"Inverse Square Root",
"1 / Square root of A"},
159 {0,
"", 0,
N_(
"Comparison"),
""},
165 {
NODE_MATH_COMPARE,
"COMPARE", 0,
"Compare",
"1 if (A == B) within tolerance C else 0"},
170 "The minimum from A and B with smoothing C"},
175 "The maximum from A and B with smoothing C"},
176 {0,
"", 0,
N_(
"Rounding"),
""},
181 "Round A to the nearest integer. Round upward if the fraction part is 0.5"},
182 {
NODE_MATH_FLOOR,
"FLOOR", 0,
"Floor",
"The largest integer smaller than or equal A"},
183 {
NODE_MATH_CEIL,
"CEIL", 0,
"Ceil",
"The smallest integer greater than or equal A"},
184 {
NODE_MATH_TRUNC,
"TRUNC", 0,
"Truncate",
"The integer part of A, removing fractional digits"},
188 {
NODE_MATH_WRAP,
"WRAP", 0,
"Wrap",
"Wrap value to range, wrap(A,B)"},
189 {
NODE_MATH_SNAP,
"SNAP", 0,
"Snap",
"Snap to increment, snap(A,B)"},
194 "Wraps a value and reverses every other cycle (A,B)"},
195 {0,
"", 0,
N_(
"Trigonometric"),
""},
208 {0,
"", 0,
N_(
"Conversion"),
""},
209 {
NODE_MATH_RADIANS,
"RADIANS", 0,
"To Radians",
"Convert from degrees to radians"},
210 {
NODE_MATH_DEGREES,
"DEGREES", 0,
"To Degrees",
"Convert from radians to degrees"},
226 "Reflect A around the normal B. B doesn't need to be normalized"},
231 "For a given incident vector A, surface normal B and ratio of indices of refraction, Ior, "
232 "refract returns the refraction vector, R"},
237 "Orients a vector A to point away from a surface B as defined by its normal C. "
238 "Returns (dot(B, C) < 0) ? A : -A"},
258 "Round A to the largest integer multiple of B less than or equal A"},
278 "True when the first input is smaller than second input"},
282 "Less Than or Equal",
283 "True when the first input is smaller than the second input or equal"},
288 "True when the first input is greater than the second input"},
292 "Greater Than or Equal",
293 "True when the first input is greater than the second input or equal"},
298 "True when both inputs are approximately equal"},
303 "True when both inputs are not approximately equal"},
312 "Linear interpolation between From Min and From Max values"},
317 "Stepped linear interpolation between From Min and From Max values"},
322 "Smooth Hermite edge interpolation between From Min and From Max values"},
327 "Smoother Hermite edge interpolation between From Min and From Max values"},
332 {
NODE_CLAMP_MINMAX,
"MINMAX", 0,
"Min Max",
"Constrain value between min and max"},
337 "Constrain value between min and max, swapping arguments when min > max"},
342 {1,
"1D", 0,
"1D",
"Use the scalar value W as input"},
343 {2,
"2D", 0,
"2D",
"Use the 2D vector (x, y) as input. The z component is ignored"},
344 {3,
"3D", 0,
"3D",
"Use the 3D vector Vector as input"},
345 {4,
"4D", 0,
"4D",
"Use the 4D vector (x, y, z, w) as input"},
350 {0,
"SOFTEN", 0,
"Soften",
""},
351 {1,
"SHARPEN", 0,
"Sharpen",
""},
352 {2,
"LAPLACE", 0,
"Laplace",
""},
353 {3,
"SOBEL", 0,
"Sobel",
""},
354 {4,
"PREWITT", 0,
"Prewitt",
""},
355 {5,
"KIRSCH", 0,
"Kirsch",
""},
356 {6,
"SHADOW", 0,
"Shadow",
""},
365 "Replace the value and data type of an existing attribute, or create a new one"},
370 "Add the random values to the existing attribute values"},
375 "Subtract random values from the existing attribute values"},
380 "Multiply the existing attribute values with the random values"},
386 {0,
"NEAREST", 0,
"Nearest",
""},
387 {1,
"BILINEAR", 0,
"Bilinear",
""},
388 {2,
"BICUBIC", 0,
"Bicubic",
""},
397 "Use shaders for all renderers and viewports, unless there exists a more specific output"},
404 {0,
"CryptoObject", 0,
"Object",
"Use Object layer"},
405 {1,
"CryptoMaterial", 0,
"Material",
"Use Material layer"},
406 {2,
"CryptoAsset", 0,
"Asset",
"Use Asset layer"},
418 #define ITEM_ATTRIBUTE \
420 GEO_NODE_ATTRIBUTE_INPUT_ATTRIBUTE, "ATTRIBUTE", 0, "Attribute", "" \
424 GEO_NODE_ATTRIBUTE_INPUT_FLOAT, "FLOAT", 0, "Float", "" \
426 #define ITEM_VECTOR \
428 GEO_NODE_ATTRIBUTE_INPUT_VECTOR, "VECTOR", 0, "Vector", "" \
432 GEO_NODE_ATTRIBUTE_INPUT_COLOR, "COLOR", 0, "Color", "" \
434 #define ITEM_BOOLEAN \
436 GEO_NODE_ATTRIBUTE_INPUT_BOOLEAN, "BOOLEAN", 0, "Boolean", "" \
477 #undef ITEM_ATTRIBUTE
516 if (nt == typeinfo) {
530 if (
STREQ(nt->idname, idname)) {
561 int totitem = 0, i = 0;
564 if (poll && !poll(
data, nt)) {
571 tmp.
icon = nt->ui_icon;
572 tmp.
name = nt->ui_name;
596 if (ntype == typeinfo) {
610 if (
STREQ(ntype->idname, idname)) {
641 int totitem = 0, i = 0;
644 if (poll && !poll(
data, ntype)) {
651 tmp.
icon = ntype->ui_icon;
652 tmp.
name = ntype->ui_name;
676 if (stype == typeinfo) {
690 if (
STREQ(stype->idname, idname)) {
721 int totitem = 0, i = 0;
725 if (poll && !poll(
data, stype)) {
730 srna = stype->ext_socket.srna;
771 tmp.
icon = ICON_NONE;
776 tmp.
name =
"CustomGroup";
778 tmp.
icon = ICON_NONE;
783 tmp.
name =
"UNDEFINED";
785 tmp.
icon = ICON_NONE;
788 # define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
789 if (STREQ(#Category, "Node")) { \
791 tmp.identifier = EnumName; \
793 tmp.description = UIDesc; \
794 tmp.icon = ICON_NONE; \
795 RNA_enum_item_add(&item, &totitem, &tmp); \
797 # include "../../nodes/NOD_static_types.h"
801 # define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
802 if (STREQ(#Category, "ShaderNode")) { \
804 tmp.identifier = EnumName; \
806 tmp.description = UIDesc; \
807 tmp.icon = ICON_NONE; \
808 RNA_enum_item_add(&item, &totitem, &tmp); \
810 # include "../../nodes/NOD_static_types.h"
815 # define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
816 if (STREQ(#Category, "CompositorNode")) { \
818 tmp.identifier = EnumName; \
820 tmp.description = UIDesc; \
821 tmp.icon = ICON_NONE; \
822 RNA_enum_item_add(&item, &totitem, &tmp); \
824 # include "../../nodes/NOD_static_types.h"
829 # define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
830 if (STREQ(#Category, "TextureNode")) { \
832 tmp.identifier = EnumName; \
834 tmp.description = UIDesc; \
835 tmp.icon = ICON_NONE; \
836 RNA_enum_item_add(&item, &totitem, &tmp); \
838 # include "../../nodes/NOD_static_types.h"
843 # define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
844 if (STREQ(#Category, "GeometryNode")) { \
846 tmp.identifier = EnumName; \
848 tmp.description = UIDesc; \
849 tmp.icon = ICON_NONE; \
850 RNA_enum_item_add(&item, &totitem, &tmp); \
852 # include "../../nodes/NOD_static_types.h"
857 # define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
858 if (STREQ(#Category, "FunctionNode")) { \
860 tmp.identifier = EnumName; \
862 tmp.description = UIDesc; \
863 tmp.icon = ICON_NONE; \
864 RNA_enum_item_add(&item, &totitem, &tmp); \
866 # include "../../nodes/NOD_static_types.h"
901 func = &rna_NodeTree_poll_func;
908 visible = *(
bool *)
ret;
924 func = &rna_NodeTree_update_func;
932 static void rna_NodeTree_get_from_context(
935 extern FunctionRNA rna_NodeTree_get_from_context_func;
940 void *ret1, *ret2, *ret3;
944 func = &rna_NodeTree_get_from_context_func;
954 *r_id = *(
ID **)ret2;
955 *r_from = *(
ID **)ret3;
980 const char *identifier,
988 int have_function[3];
992 memset(&dummyntree, 0,
sizeof(
bNodeTree));
997 if (validate(&dummyptr,
data, have_function) != 0) {
1001 if (strlen(identifier) >=
sizeof(dummynt.
idname)) {
1004 "Registering node tree class: '%s' is too long, maximum length is %d",
1006 (
int)
sizeof(dummynt.
idname));
1018 memcpy(nt, &dummynt,
sizeof(dummynt));
1031 nt->
poll = (have_function[0]) ? rna_NodeTree_poll :
NULL;
1032 nt->
update = (have_function[1]) ? rna_NodeTree_update_reg :
NULL;
1049 "Node tree '%s' has undefined type %s",
1078 if (!rna_NodeTree_check(
ntree, reports)) {
1088 const char *disabled_hint =
NULL;
1089 if (ntype->
poll && !ntype->
poll(ntype,
ntree, &disabled_hint)) {
1090 if (disabled_hint) {
1093 "Cannot add node of type %s to node tree '%s'\n %s",
1102 "Cannot add node of type %s to node tree '%s'",
1130 if (!rna_NodeTree_check(
ntree, reports)) {
1151 if (!rna_NodeTree_check(
ntree, reports)) {
1200 if (!rna_NodeTree_check(
ntree, reports)) {
1209 if (!fromnode || !tonode) {
1218 if (verify_limits) {
1228 if (link->fromsock == fromsock && link->tosock == tosock) {
1262 if (!rna_NodeTree_check(
ntree, reports)) {
1282 if (!rna_NodeTree_check(
ntree, reports)) {
1303 if (socket->flag &
SELECT) {
1310 static void rna_NodeTree_active_input_set(
PointerRNA *
ptr,
int value)
1325 if (socket->flag &
SELECT) {
1332 static void rna_NodeTree_active_output_set(
PointerRNA *
ptr,
int value)
1345 if (!rna_NodeTree_check(
ntree, reports)) {
1360 if (!rna_NodeTree_check(
ntree, reports)) {
1377 if (!rna_NodeTree_check(
ntree, reports)) {
1395 if (!rna_NodeTree_check(
ntree, reports)) {
1409 if (!rna_NodeTree_check(
ntree, reports)) {
1421 static void rna_NodeTree_inputs_move(
bNodeTree *
ntree,
Main *bmain,
int from_index,
int to_index)
1423 if (from_index == to_index) {
1426 if (from_index < 0 || to_index < 0) {
1431 if (to_index < from_index) {
1452 static void rna_NodeTree_outputs_move(
bNodeTree *
ntree,
Main *bmain,
int from_index,
int to_index)
1454 if (from_index == to_index) {
1457 if (from_index < 0 || to_index < 0) {
1462 if (to_index < from_index) {
1507 if (
node->typeinfo->rna_ext.srna) {
1508 return node->typeinfo->rna_ext.srna;
1518 char name_esc[
sizeof(
node->name) * 2];
1528 char name_esc[
sizeof(
node->name) * 2];
1548 return BLI_sprintfN(
"nodes[\"%s\"].image_user", name_esc);
1565 func = &rna_Node_poll_func;
1572 visible = *(
bool *)
ret;
1579 static bool rna_Node_poll_instance(
bNode *
node,
1581 const char **
UNUSED(disabled_info))
1592 func = &rna_Node_poll_instance_func;
1596 node->typeinfo->rna_ext.call(
NULL, &
ptr, func, &list);
1599 visible = *(
bool *)
ret;
1606 static bool rna_Node_poll_instance_default(
bNode *
node,
1608 const char **disabled_info)
1611 return rna_Node_poll(
node->typeinfo,
ntree, disabled_info);
1623 func = &rna_Node_update_func;
1626 node->typeinfo->rna_ext.call(
NULL, &
ptr, func, &list);
1640 func = &rna_Node_insert_link_func;
1644 node->typeinfo->rna_ext.call(
NULL, &
ptr, func, &list);
1657 func = &rna_Node_init_func;
1673 func = &rna_Node_copy_func;
1677 node->typeinfo->rna_ext.call(
NULL,
ptr, func, &list);
1690 func = &rna_Node_free_func;
1693 node->typeinfo->rna_ext.call(
NULL,
ptr, func, &list);
1706 func = &rna_Node_draw_buttons_func;
1711 node->typeinfo->rna_ext.call(
C,
ptr, func, &list);
1718 extern FunctionRNA rna_Node_draw_buttons_ext_func;
1724 func = &rna_Node_draw_buttons_ext_func;
1729 node->typeinfo->rna_ext.call(
C,
ptr, func, &list);
1744 func = &rna_Node_draw_label_func;
1748 node->typeinfo->rna_ext.call(
NULL, &
ptr, func, &list);
1751 rlabel = (
char *)
ret;
1757 static bool rna_Node_is_registered_node_type(
StructRNA *
type)
1762 static void rna_Node_is_registered_node_type_runtime(
bContext *
UNUSED(
C),
1796 const char *identifier,
1806 int have_function[10];
1813 memset(&dummynode, 0,
sizeof(
bNode));
1818 if (validate(&dummyptr,
data, have_function) != 0) {
1822 if (strlen(identifier) >=
sizeof(dummynt.
idname)) {
1825 "Registering node class: '%s' is too long, maximum length is %d",
1827 (
int)
sizeof(dummynt.
idname));
1839 memcpy(nt, &dummynt,
sizeof(dummynt));
1852 nt->
rna_ext.
srna,
"is_registered_node_type", rna_Node_is_registered_node_type_runtime);
1861 nt->
poll = (have_function[0]) ? rna_Node_poll :
NULL;
1862 nt->
poll_instance = (have_function[1]) ? rna_Node_poll_instance : rna_Node_poll_instance_default;
1863 nt->
updatefunc = (have_function[2]) ? rna_Node_update_reg :
NULL;
1870 nt->
labelfunc = (have_function[9]) ? rna_Node_draw_label :
NULL;
1888 const char *identifier,
1915 if (value_supported(item)) {
1948 static const EnumPropertyItem *rna_GeometryNodeAttributeRandomize_operation_itemf(
1975 static void rna_GeometryNodeAttributeRandomize_data_type_update(
Main *bmain,
1988 rna_Node_socket_update(bmain,
scene,
ptr);
2001 static const EnumPropertyItem *rna_GeometryNodeAttributeConvert_type_itemf(
2026 static const EnumPropertyItem *rna_GeometryNodeAttributeVectorMath_input_type_b_itemf(
2057 static const EnumPropertyItem *rna_GeometryNodeAttributeVectorMath_input_type_c_itemf(
2088 static void rna_GeometryNodeAttributeVectorMath_operation_update(
Main *bmain,
2113 rna_Node_socket_update(bmain,
scene,
ptr);
2116 static bool attribute_map_range_type_supported(
const EnumPropertyItem *item)
2120 static const EnumPropertyItem *rna_GeometryNodeAttributeMapRange_type_itemf(
2130 const char *identifier,
2152 const char *identifier,
2174 const char *identifier,
2196 const char *identifier,
2218 const char *identifier,
2241 if (create && !
node->prop) {
2305 rna_Node_update(bmain,
scene,
ptr);
2314 static void rna_Node_select_set(
PointerRNA *
ptr,
bool value)
2320 static void rna_Node_name_set(
PointerRNA *
ptr,
const char *value)
2324 char oldname[
sizeof(
node->name)];
2343 const char *identifier)
2353 return rna_NodeTree_inputs_new((
bNodeTree *)
node->id, bmain, reports,
type, name);
2378 const char *identifier)
2387 return rna_NodeTree_outputs_new((
bNodeTree *)
node->id, bmain, reports,
type, name);
2406 static void rna_Node_socket_remove(
2427 for (sock =
node->inputs.first; sock; sock = nextsock) {
2428 nextsock = sock->
next;
2441 for (sock =
node->outputs.first; sock; sock = nextsock) {
2442 nextsock = sock->
next;
2450 static void rna_Node_inputs_move(
ID *
id,
bNode *
node,
Main *bmain,
int from_index,
int to_index)
2455 if (from_index == to_index) {
2458 if (from_index < 0 || to_index < 0) {
2463 if (to_index < from_index) {
2482 static void rna_Node_outputs_move(
ID *
id,
bNode *
node,
Main *bmain,
int from_index,
int to_index)
2487 if (from_index == to_index) {
2490 if (from_index < 0 || to_index < 0) {
2495 if (to_index < from_index) {
2514 static void rna_Node_width_range(
2518 *
min = *softmin =
node->typeinfo->minwidth;
2519 *
max = *softmax =
node->typeinfo->maxwidth;
2522 static void rna_Node_height_range(
2526 *
min = *softmin =
node->typeinfo->minheight;
2527 *
max = *softmax =
node->typeinfo->maxheight;
2530 static void rna_Node_dimensions_get(
PointerRNA *
ptr,
float *value)
2533 value[0] =
node->totr.xmax -
node->totr.xmin;
2534 value[1] =
node->totr.ymax -
node->totr.ymin;
2539 static void rna_NodeSocket_draw(
2548 func = &rna_NodeSocket_draw_func;
2560 static void rna_NodeSocket_draw_color(
bContext *
C,
2565 extern FunctionRNA rna_NodeSocket_draw_color_func;
2572 func = &rna_NodeSocket_draw_color_func;
2604 const char *identifier,
2612 int have_function[2];
2623 if (validate(&dummyptr,
data, have_function) != 0) {
2627 if (strlen(identifier) >=
sizeof(dummyst.
idname)) {
2630 "Registering node socket class: '%s' is too long, maximum length is %d",
2632 (
int)
sizeof(dummyst.
idname));
2641 memcpy(st, &dummyst,
sizeof(dummyst));
2663 st->
draw = (have_function[0]) ? rna_NodeSocket_draw :
NULL;
2664 st->
draw_color = (have_function[1]) ? rna_NodeSocket_draw_color :
NULL;
2690 char name_esc[
sizeof(
node->name) * 2];
2699 return BLI_sprintfN(
"nodes[\"%s\"].inputs[%d]", name_esc, socketindex);
2702 return BLI_sprintfN(
"nodes[\"%s\"].outputs[%d]", name_esc, socketindex);
2710 if (create && !sock->
prop) {
2731 static void rna_NodeSocket_type_set(
PointerRNA *
ptr,
int value)
2756 static void rna_NodeSocket_link_limit_set(
PointerRNA *
ptr,
int value)
2760 sock->
limit = (value == 0 ? 0xFFF : value);
2763 static void rna_NodeSocket_hide_set(
PointerRNA *
ptr,
bool value)
2782 extern FunctionRNA rna_NodeSocketInterface_draw_func;
2792 func = &rna_NodeSocketInterface_draw_func;
2804 extern FunctionRNA rna_NodeSocketInterface_draw_color_func;
2816 &rna_NodeSocketInterface_draw_color_func;
2828 static void rna_NodeSocketInterface_register_properties(
bNodeTree *
ntree,
2832 extern FunctionRNA rna_NodeSocketInterface_register_properties_func;
2844 func = &rna_NodeSocketInterface_register_properties_func;
2853 static void rna_NodeSocketInterface_init_socket(
2856 extern FunctionRNA rna_NodeSocketInterface_init_socket_func;
2870 func = &rna_NodeSocketInterface_init_socket_func;
2881 static void rna_NodeSocketInterface_from_socket(
bNodeTree *
ntree,
2886 extern FunctionRNA rna_NodeSocketInterface_from_socket_func;
2900 func = &rna_NodeSocketInterface_from_socket_func;
2928 const char *identifier,
2936 int have_function[5];
2946 if (validate(&dummyptr,
data, have_function) != 0) {
2958 memcpy(st, &dummyst,
sizeof(dummyst));
2980 rna_NodeSocketInterface_register_properties :
3010 if (socketindex != -1) {
3015 if (socketindex != -1) {
3026 if (create && !sock->
prop) {
3051 static void rna_NodeSocketStandard_draw(
ID *
id,
3063 static void rna_NodeSocketStandard_draw_color(
3071 static void rna_NodeSocketInterfaceStandard_draw(
ID *
id,
3081 static void rna_NodeSocketInterfaceStandard_draw_color(
ID *
id,
3091 static void rna_NodeSocketStandard_float_range(
3098 if (dval->
max < dval->
min) {
3104 *softmin = dval->
min;
3105 *softmax = dval->
max;
3108 static void rna_NodeSocketStandard_int_range(
3115 if (dval->
max < dval->
min) {
3121 *softmin = dval->
min;
3122 *softmax = dval->
max;
3125 static void rna_NodeSocketStandard_vector_range(
3131 if (dval->
max < dval->
min) {
3137 *softmin = dval->
min;
3138 *softmax = dval->
max;
3162 rna_NodeSocketStandard_value_update(
C,
ptr);
3171 static void rna_NodeInternalSocketTemplate_name_get(
PointerRNA *
ptr,
char *value)
3174 strcpy(value, stemp->
name);
3177 static int rna_NodeInternalSocketTemplate_name_length(
PointerRNA *
ptr)
3180 return strlen(stemp->
name);
3183 static void rna_NodeInternalSocketTemplate_identifier_get(
PointerRNA *
ptr,
char *value)
3189 static int rna_NodeInternalSocketTemplate_identifier_length(
PointerRNA *
ptr)
3195 static int rna_NodeInternalSocketTemplate_type_get(
PointerRNA *
ptr)
3204 if (ntype && ntype->
inputs) {
3207 while (i < index && stemp->
type >= 0) {
3211 if (i == index && stemp->
type >= 0) {
3223 if (ntype && ntype->
outputs) {
3226 while (i < index && stemp->
type >= 0) {
3230 if (i == index && stemp->
type >= 0) {
3242 const char *disabled_hint;
3243 return ntype && (!ntype->
poll || ntype->
poll(ntype,
ntree, &disabled_hint));
3249 const char *disabled_hint;
3255 return !ntype->
poll || ntype->
poll(ntype,
ntree, &disabled_hint);
3259 static void rna_NodeInternal_update(
ID *
id,
bNode *
node)
3262 if (
node->typeinfo->updatefunc) {
3267 static void rna_NodeInternal_draw_buttons(
ID *
id,
3272 if (
node->typeinfo->draw_buttons) {
3275 node->typeinfo->draw_buttons(layout,
C, &
ptr);
3279 static void rna_NodeInternal_draw_buttons_ext(
ID *
id,
3284 if (
node->typeinfo->draw_buttons_ex) {
3287 node->typeinfo->draw_buttons_ex(layout,
C, &
ptr);
3289 else if (
node->typeinfo->draw_buttons) {
3292 node->typeinfo->draw_buttons(layout,
C, &
ptr);
3299 const char *identifier,
3305 bmain, reports, &RNA_NodeCustomGroup,
data, identifier, validate, call,
free);
3321 static StructRNA *rna_GeometryNodeCustomGroup_register(
Main *bmain,
3324 const char *identifier,
3330 bmain, reports, &RNA_GeometryNodeCustomGroup,
data, identifier, validate, call,
free);
3350 static StructRNA *rna_ShaderNodeCustomGroup_register(
Main *bmain,
3353 const char *identifier,
3359 bmain, reports, &RNA_ShaderNodeCustomGroup,
data, identifier, validate, call,
free);
3377 static StructRNA *rna_CompositorNodeCustomGroup_register(
Main *bmain,
3380 const char *identifier,
3386 bmain, reports, &RNA_CompositorNodeCustomGroup,
data, identifier, validate, call,
free);
3403 static void rna_CompositorNode_tag_need_exec(
bNode *
node)
3405 node->need_exec =
true;
3438 const char *disabled_hint =
NULL;
3447 node->id = &ngroup->id;
3461 const char *disabled_hint =
NULL;
3492 static void rna_distance_matte_t1_set(
PointerRNA *
ptr,
float value)
3500 static void rna_distance_matte_t2_set(
PointerRNA *
ptr,
float value)
3508 static void rna_difference_matte_t1_set(
PointerRNA *
ptr,
float value)
3516 static void rna_difference_matte_t2_set(
PointerRNA *
ptr,
float value)
3532 if (value < chroma->t2) {
3542 if (value > chroma->t1) {
3578 rna_Node_update(bmain,
scene,
ptr);
3589 int i = 0, totitem = 0;
3595 if (rl->
name[0] ==
'\0') {
3625 if (ima ==
NULL || ima->rr ==
NULL) {
3630 rl = ima->rr->layers.first;
3631 item = renderresult_layers_add_enum(rl);
3647 if (!ima || !(ima->rr)) {
3663 if (!ima || !(ima->rr)) {
3674 int i = 1, totitem = 0;
3683 if (rv->
name[0] ==
'\0') {
3713 if (ima ==
NULL || ima->rr ==
NULL) {
3718 rv = ima->rr->views.first;
3719 item = renderresult_views_add_enum(rv);
3741 rl = sce->view_layers.first;
3742 item = renderresult_layers_add_enum(rl);
3751 rna_Node_update(bmain,
scene,
ptr);
3767 switch (
node->custom1) {
3860 rna_Node_update(bmain,
scene,
ptr);
3866 rna_Node_update(bmain,
scene,
ptr);
3869 static void rna_NodeCryptomatte_source_set(
PointerRNA *
ptr,
int value)
3876 node->custom1 = value;
3879 static int rna_NodeCryptomatte_layer_name_get(
PointerRNA *
ptr)
3885 if (
STREQLEN(storage->layer_name, layer->name,
sizeof(storage->layer_name))) {
3892 static void rna_NodeCryptomatte_layer_name_set(
PointerRNA *
ptr,
int new_value)
3899 STRNCPY(storage->layer_name, layer->name);
3917 template.value = layer_index;
3918 template.identifier = layer->name;
3919 template.name = layer->name;
3944 rna_Node_scene_set(
ptr, value, reports);
3978 static void rna_NodeCryptomatte_matte_get(
PointerRNA *
ptr,
char *value)
3983 strcpy(value, matte_id);
3987 static int rna_NodeCryptomatte_matte_length(
PointerRNA *
ptr)
3992 int result = strlen(matte_id);
3997 static void rna_NodeCryptomatte_matte_set(
PointerRNA *
ptr,
const char *value)
4007 rna_Node_update(bmain,
scene,
ptr);
4013 rna_Node_update(bmain,
scene,
ptr);
4035 for (sock =
node->inputs.first; sock; sock = sock->
next) {
4037 if (sockdata ==
data) {
4050 static void rna_NodeOutputFileSlotFile_path_set(
PointerRNA *
ptr,
const char *value)
4057 if (rna_NodeOutputFileSocket_find_node(
ntree, sockdata, &
node, &sock)) {
4062 static void rna_NodeOutputFileSlotLayer_name_set(
PointerRNA *
ptr,
const char *value)
4069 if (rna_NodeOutputFileSocket_find_node(
ntree, sockdata, &
node, &sock)) {
4093 static void rna_ShaderNodeTexIES_mode_set(
PointerRNA *
ptr,
int value)
4098 if (nss->mode != value) {
4100 nss->filepath[0] =
'\0';
4117 static void rna_ShaderNodeScript_mode_set(
PointerRNA *
ptr,
int value)
4122 if (nss->mode != value) {
4124 nss->filepath[0] =
'\0';
4141 if (nss->bytecode) {
4143 nss->bytecode =
NULL;
4146 nss->bytecode_hash[0] =
'\0';
4150 static void rna_ShaderNodeScript_bytecode_get(
PointerRNA *
ptr,
char *value)
4155 strcpy(value, (nss->bytecode) ? nss->bytecode :
"");
4158 static int rna_ShaderNodeScript_bytecode_length(
PointerRNA *
ptr)
4163 return (nss->bytecode) ? strlen(nss->bytecode) : 0;
4166 static void rna_ShaderNodeScript_bytecode_set(
PointerRNA *
ptr,
const char *value)
4171 if (nss->bytecode) {
4175 if (value && value[0]) {
4179 nss->bytecode =
NULL;
4205 rna_Node_update(bmain,
scene,
ptr);
4214 rna_Node_update(bmain,
scene,
ptr);
4223 rna_Node_update(bmain,
scene,
ptr);
4232 rna_Node_update(bmain,
scene,
ptr);
4251 static void rna_ShaderNodePointDensity_psys_set(
PointerRNA *
ptr,
4267 static int point_density_particle_color_source_from_shader(
4283 static int point_density_vertex_color_source_from_shader(
4320 pd->
color_source = point_density_particle_color_source_from_shader(shader_point_density);
4326 pd->
ob_color_source = point_density_vertex_color_source_from_shader(shader_point_density);
4339 void rna_ShaderNodePointDensity_density_calc(
bNode *
self,
4354 *
length = 4 * resolution * resolution * resolution;
4356 if (*values ==
NULL) {
4357 *values =
MEM_mallocN(
sizeof(
float) * (*
length),
"point density dynamic array");
4365 memset(pd, 0,
sizeof(*pd));
4369 void rna_ShaderNodePointDensity_density_minmax(
bNode *
self,
4389 {0,
"PLACEHOLDER", 0,
"Placeholder",
""},
4394 {0,
"ALL", 0,
"All",
""},
4399 {0,
"PLACEHOLDER", 0,
"Placeholder",
""},
4404 {1,
"R", 0,
"R",
""},
4405 {2,
"G", 0,
"G",
""},
4406 {3,
"B", 0,
"B",
""},
4411 {0,
"X", 0,
"Flip X",
""},
4412 {1,
"Y", 0,
"Flip Y",
""},
4413 {2,
"XY", 0,
"Flip X & Y",
""},
4418 {0,
"ITUBT601", 0,
"ITU 601",
""},
4419 {1,
"ITUBT709", 0,
"ITU 709",
""},
4420 {2,
"JFIF", 0,
"Jpeg",
""},
4472 "Absorption Coefficient",
4473 "Directly set the absorption coefficient \"sigma_a\" (this is not the most intuitive way to "
4478 "Melanin Concentration",
4479 "Define the melanin concentrations below to get the most realistic-looking hair "
4480 "(you can get the concentrations for different types of hair online)"},
4485 "Choose the color of your preference, and the shader will approximate the absorption "
4486 "coefficient to render lookalike hair"},
4512 "Christensen-Burley",
4513 "Approximation to physically based volume scattering"},
4518 "Volumetric approximation to physically based volume scattering"},
4529 prop,
NULL,
NULL,
"rna_NodeGroupInputOutput_interface_typef",
NULL);
4541 prop,
NULL,
NULL,
"rna_NodeGroupInputOutput_interface_typef",
NULL);
4549 prop,
"Active Output",
"True if this node is used as the active group output");
4561 prop,
NULL,
"rna_NodeGroup_node_tree_set",
NULL,
"rna_NodeGroup_node_tree_poll");
4575 const char *struct_name,
4576 const char *base_name,
4577 const char *ui_name,
4578 const char *ui_desc,
4579 const char *reg_func)
4784 prop,
"Node Output",
"For node-based textures, which output node to use");
4821 prop,
"Active Output",
"True if this node is used as the active output");
4828 prop,
"Target",
"Which renderer and viewport shading types to use the shaders for");
4872 "The attribute is associated with the object geometry, and its value "
4873 "varies from vertex to vertex, or within the object volume"},
4878 "The attribute is associated with the object or mesh data-block itself, "
4879 "and its value is uniform"},
4884 "The attribute is associated with the instancer particle system or object, "
4885 "falling back to the Object mode if the attribute isn't found, or the object "
4886 "is not instanced"},
4924 {
SHD_SKY_HOSEK,
"HOSEK_WILKIE", 0,
"Hosek / Wilkie",
"Hosek / Wilkie 2012"},
4928 static float default_dir[3] = {0.0f, 0.0f, 1.0f};
4956 prop,
"Ground Albedo",
"Ground color that is subtly reflected in the sky");
5016 {
SHD_INTERP_CLOSEST,
"Closest", 0,
"Closest",
"No interpolation (sample closest texel)"},
5018 {
SHD_INTERP_SMART,
"Smart", 0,
"Smart",
"Bicubic when magnifying, else bilinear (OSL only)"},
5029 "Equirectangular or latitude-longitude projection"},
5034 "Projection from an orthographic photo of a mirror ball"},
5067 "Parameters defining which layer, pass and frame of the image is displayed");
5078 "Image is projected flat using the X and Y coordinates of the texture vector"},
5083 "Image is projected using different components for each side of the object space bounding "
5089 "Image is projected spherically using the Z axis as central"},
5094 "Image is projected from the tube using the Z axis as central"},
5103 "Cause the image to repeat horizontally and vertically"},
5108 "Extend by repeating edge pixels of the image"},
5113 "Clip to image size and set exterior pixels as transparent"},
5133 prop,
"Projection",
"Method to project 2D image on object with a 3D texture vector");
5143 prop,
"Projection Blend",
"For box projection, amount of blend to use between sides");
5149 prop,
"Extension",
"How the image is extrapolated past its original bounds");
5158 "Parameters defining which layer, pass and frame of the image is displayed");
5171 "Create a progression easing from one step to the next"},
5178 "Create a quadratic progression in the shape of a sphere"},
5205 prop,
"Dimensions",
"The dimensions of the space to evaluate the noise in");
5308 "Computes the distance to the closest point as well as its position and color"},
5313 "Computes the distance to the second closest point as well as its position and color"},
5318 "Smoothed version of F1. Weighted sum of neighbor voronoi cells"},
5323 "Computes the distance to the edge of the voronoi cell"},
5328 "Computes the radius of the n-sphere inscribed in the voronoi cell"},
5358 {
SHD_WAVE_BANDS,
"BANDS", 0,
"Bands",
"Use standard wave texture in bands"},
5359 {
SHD_WAVE_RINGS,
"RINGS", 0,
"Rings",
"Use wave texture in rings"},
5379 "Rings along spherical distance"},
5428 prop,
"Dimensions",
"The dimensions of the space to evaluate the noise in");
5442 prop,
"Object",
"Use coordinates from this object (for object texture coordinates output)");
5448 prop,
"From Instancer",
"Use the parent of the instance object if possible");
5461 "Transform a normal vector with unit length"},
5515 "Generate point density from a particle system"},
5520 "Generate point density from an object's vertices"},
5525 {
SHD_INTERP_CLOSEST,
"Closest", 0,
"Closest",
"No interpolation (sample closest texel)"},
5542 "Lifetime mapped as 0.0 to 1.0 intensity"},
5547 "Particle speed (absolute magnitude of velocity) mapped as 0.0 to 1.0 intensity"},
5549 "PARTICLE_VELOCITY",
5551 "Particle Velocity",
5552 "XYZ velocity mapped to RGB colors"},
5562 "Vertex group weight"},
5567 "XYZ normal vector mapped to RGB colors"},
5590 "rna_ShaderNodePointDensity_psys_get",
5591 "rna_ShaderNodePointDensity_psys_set",
5600 prop,
"Resolution",
"Resolution used by the texture holding the point density");
5607 prop,
"Radius",
"Radius from the shaded sample to look for points within");
5636 func =
RNA_def_function(srna,
"cache_point_density",
"rna_ShaderNodePointDensity_density_cache");
5640 func =
RNA_def_function(srna,
"calc_point_density",
"rna_ShaderNodePointDensity_density_calc");
5649 srna,
"calc_point_density_minmax",
"rna_ShaderNodePointDensity_density_minmax");
5698 prop,
"Subsurface Method",
"Method for rendering subsurface scattering");
5742 prop,
"Invert",
"Invert the bump mapping direction to push into the surface instead of out");
5765 prop,
"Color Parametrization",
"Select the shader's color parametrization");
5780 prop,
"From Instancer",
"Use the parent of the instance object if possible");
5812 prop,
"Use Tips",
"Lower half of the texture is for tips of the stroke");
5819 {
SHD_SPACE_TANGENT,
"TANGENT", 0,
"Tangent Space",
"Tangent space normal mapping"},
5820 {
SHD_SPACE_OBJECT,
"OBJECT", 0,
"Object Space",
"Object space normal mapping"},
5821 {
SHD_SPACE_WORLD,
"WORLD", 0,
"World Space",
"World space normal mapping"},
5825 "Blender Object Space",
5826 "Object space normal mapping, compatible with Blender render baking"},
5830 "Blender World Space",
5831 "World space normal mapping, compatible with Blender render baking"},
5858 "Displacement is in object space, affected by object scale"},
5863 "Displacement is in world space, not affected by object scale"},
5885 "Tangent space vector displacement mapping"},
5886 {
SHD_SPACE_OBJECT,
"OBJECT", 0,
"Object Space",
"Object space vector displacement mapping"},
5887 {
SHD_SPACE_WORLD,
"WORLD", 0,
"World Space",
"World space vector displacement mapping"},
5905 {
SHD_TANGENT_RADIAL,
"RADIAL", 0,
"Radial",
"Radial tangent around the X, Y or Z axis"},
5968 prop,
"Only Local",
"Only consider the object itself when computing AO");
5980 "Normal distribution, multiple can be combined to fit more complex profiles"},
5984 "Christensen-Burley",
5985 "Approximation to physically based volume scattering"},
5990 "Volumetric approximation to physically based volume scattering"},
6001 "Function to determine how much light nearby points contribute based "
6002 "on their distance to the shading point");
6027 prop,
"Source",
"Whether the IES file is loaded from disk or from a text data-block");
6074 "Automatically update the shader when the .osl file changes (external scripts only)");
6078 "rna_ShaderNodeScript_bytecode_get",
6079 "rna_ShaderNodeScript_bytecode_length",
6080 "rna_ShaderNodeScript_bytecode_set");
6086 prop,
"Bytecode Hash",
"Hash of compile bytecode, for quick equality checking");
6095 func =
RNA_def_function(srna,
"find_socket",
"rna_ShaderNodeScript_find_socket");
6099 RNA_def_boolean(func,
"is_output",
false,
"Output",
"Whether the socket is an output");
6103 func =
RNA_def_function(srna,
"add_socket",
"rna_ShaderNodeScript_add_socket");
6110 RNA_def_boolean(func,
"is_output",
false,
"Output",
"Whether the socket is an output");
6114 func =
RNA_def_function(srna,
"remove_socket",
"rna_ShaderNodeScript_remove_socket");
6170 prop,
"Variable Size",
"Support variable blur per pixel when using an image for size input");
6176 prop,
"Extend Bounds",
"Extend bounds of the input image to fully fit blurred image");
6196 prop,
"Relative",
"Use relative (percent) values to define blur radius");
6324 "Minimum speed for a pixel to be blurred (used to separate background from foreground)");
6340 "Scaling factor for motion vectors (actually, 'shutter speed', in frames)");
6346 prop,
"Curved",
"Interpolate between frames in a Bezier curve, rather than linearly");
6359 "Multiply the input image's RGBA channels by the alpha input value"},
6364 "Replace the input image's alpha channels by the alpha input value"},
6381 {1,
"COMBINED_RGB", 0,
"C",
"Combined RGB"},
6382 {2,
"RED", 0,
"R",
"Red Channel"},
6383 {3,
"GREEN", 0,
"G",
"Green Channel"},
6384 {4,
"BLUE", 0,
"B",
"Blue Channel"},
6385 {5,
"LUMINANCE", 0,
"L",
"Luminance Channel"},
6404 prop,
"Frames",
"Number of images of a movie to use");
6414 "Global starting frame of the movie/sequence, assuming first picture has a #1");
6422 prop,
"Offset",
"Offset the number of the frame to use in the animation");
6428 prop,
"Cyclic",
"Cycle the images in the movie");
6489 "Straight Alpha Output",
6490 "Put node output buffer to straight alpha instead of premultiplied");
6531 srna,
"Output File Slot",
"Single layer file slot of the file output node");
6541 prop,
"Save as Render",
"Apply render part of display transform when saving byte image");
6562 srna,
"Output File Layer Slot",
"Multilayer slot of the file output node");
6573 const char *struct_name)
6590 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"New socket");
6600 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"The socket to remove");
6611 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the socket to move", 0, 10000);
6614 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the socket", 0, 10000);
6642 "rna_NodeOutputFile_slots_begin",
6643 "rna_iterator_listbase_next",
6644 "rna_iterator_listbase_end",
6645 "rna_NodeOutputFile_slot_file_get",
6656 "rna_NodeOutputFile_slots_begin",
6657 "rna_iterator_listbase_next",
6658 "rna_iterator_listbase_end",
6659 "rna_NodeOutputFile_slot_layer_get",
6746 prop,
"Neighbor",
"Threshold for the number of neighbor pixels that must match");
6764 {0,
"STRETCH", 0,
"Stretch",
""},
6823 prop,
"Falloff",
"Color distances below this additional threshold are partially keyed");
6857 {1,
"RGB", 0,
"RGB",
"RGB color space"},
6858 {2,
"YCC", 0,
"YCC",
"YCbCr suppression"},
6882 prop,
"Falloff",
"Color distances below this additional threshold are partially keyed");
6891 {1,
"R", 0,
"R",
"Red spill suppression"},
6892 {2,
"G", 0,
"G",
"Green spill suppression"},
6893 {3,
"B", 0,
"B",
"Blue spill suppression"},
6898 {0,
"R", 0,
"R",
"Limit by red"},
6899 {1,
"G", 0,
"G",
"Limit by green"},
6900 {2,
"B", 0,
"B",
"Limit by blue"},
6905 {0,
"SIMPLE", 0,
"Simple",
"Simple limit algorithm"},
6906 {1,
"AVERAGE", 0,
"Average",
"Average limit algorithm"},
7002 prop,
"Acceptance",
"Tolerance for a color to be considered a keying color");
7010 prop,
"Cutoff",
"Tolerance below which colors will be considered as exact matches");
7029 prop,
"Shadow Adjust",
"Adjusts the brightness of any shadows captured");
7046 {0,
"SINGLE", 0,
"Single",
"Limit by single channel"},
7047 {1,
"MAX", 0,
"Max",
"Limit by maximum of other channels"},
7143 {0,
"BLEED_OUT", 0,
"Bleed Out",
"Allow mask pixels to bleed along edges"},
7144 {1,
"KEEP_IN", 0,
"Keep In",
"Restrict mask pixels from touching edges"},
7149 {0,
"ALL", 0,
"All",
"All pixels on inner mask edge are considered during mask calculation"},
7154 "Only inner mask pixels adjacent to outer mask pixels are considered during mask "
7188 {8,
"OCTAGON", 0,
"Octagonal",
"8 sides"},
7189 {7,
"HEPTAGON", 0,
"Heptagonal",
"7 sides"},
7190 {6,
"HEXAGON", 0,
"Hexagonal",
"6 sides"},
7191 {5,
"PENTAGON", 0,
"Pentagonal",
"5 sides"},
7192 {4,
"SQUARE", 0,
"Square",
"4 sides"},
7193 {3,
"TRIANGLE", 0,
"Triangular",
"3 sides"},
7194 {0,
"CIRCLE", 0,
"Circular",
""},
7205 prop,
"Scene",
"Scene from which to select the active camera (render scene if undefined)");
7225 prop,
"Gamma Correction",
"Enable gamma correction before and after main process");
7235 "Amount of focal blur, 128 (infinity) is perfect focus, half the value doubles "
7251 "CoC radius threshold, prevents background bleed on in-focus midground, 0 is disabled");
7263 "Disable when using an image as input instead of actual z-buffer "
7264 "(auto enabled if node not image based, eg. time node)");
7273 "Scale the Z input when not using a z-buffer, controls maximum blur designated "
7274 "by the color white or input value 1");
7442 {0,
"STRAIGHT_TO_PREMUL", 0,
"To Premultiplied",
"Convert straight to premultiplied"},
7443 {1,
"PREMUL_TO_STRAIGHT", 0,
"To Straight",
"Convert premultiplied to straight"},
7451 prop,
"Mapping",
"Conversion between premultiplied alpha and key alpha");
7460 {3,
"GHOSTS", 0,
"Ghosts",
""},
7461 {2,
"STREAKS", 0,
"Streaks",
""},
7462 {1,
"FOG_GLOW", 0,
"Fog Glow",
""},
7463 {0,
"SIMPLE_STAR", 0,
"Simple Star",
""},
7468 {0,
"HIGH", 0,
"High",
""},
7469 {1,
"MEDIUM", 0,
"Medium",
""},
7470 {2,
"LOW", 0,
"Low",
""},
7488 "If not set to high quality, the effect will be applied to a low-res copy "
7489 "of the source image");
7504 "Amount of Color Modulation, modulates colors of streaks and ghosts for "
7505 "a spectral dispersion effect");
7512 prop,
"Mix",
"-1 is original image only, 0 is exact 50/50 mix, 1 is processed image only");
7521 "The glare filter will only be applied to pixels brighter than this value");
7553 "Glow/glare size (not actual size; relative to initial size of bright area of pixels)");
7564 {1,
"RD_PHOTORECEPTOR", 0,
"R/D Photoreceptor",
""},
7565 {0,
"RH_SIMPLE", 0,
"Rh Simple",
""},
7589 "Normally always 1, but can be used as an extra control to alter the brightness curve");
7602 prop,
"Intensity",
"If less than zero, darkens image; otherwise, makes it brighter");
7621 prop,
"Color Correction",
"If 0, same for all channels; if 1, each independent");
7636 "Enable/disable projector mode (the effect is applied in horizontal direction only)");
7649 "For positive distortion factor only: scale image such that black areas are not visible");
7656 static float default_1[3] = {1.0f, 1.0f, 1.0f};
7659 {0,
"LIFT_GAMMA_GAIN", 0,
"Lift/Gamma/Gain",
""},
7661 "OFFSET_POWER_SLOPE",
7663 "Offset/Power/Slope (ASC-CDL)",
7664 "ASC-CDL standard color correction"},
7750 prop,
"Use Alpha",
"Take alpha channel into account when doing the Z operation");
7758 "Anti-alias the z-buffer to try to avoid artifacts, mostly useful for Blender renders");
7807 prop,
"Invert",
"Invert stabilization to re-introduce motion to the frame");
7816 {0,
"UNDISTORT", 0,
"Undistort",
""},
7817 {1,
"DISTORT", 0,
"Distort",
""},
7840 {0,
"SCENE", 0,
"Scene Size",
""},
7846 "Pixel size scaled by scene percentage"},
7882 prop,
"Size Source",
"Where to get the mask size from for aspect/size information");
7912 {0,
"ADD", 0,
"Add",
""},
7913 {1,
"SUBTRACT", 0,
"Subtract",
""},
7914 {2,
"MULTIPLY", 0,
"Multiply",
""},
7915 {3,
"NOT", 0,
"Not",
""},
8022 prop,
"Variable Size",
"Support variable blur per pixel when using an image for size input");
8028 prop,
"Extend Bounds",
"Extend bounds of the input image to fully fit blurred image");
8038 "Amount of focal blur, 128 (infinity) is perfect focus, half the value doubles "
8289 {0,
"CENTEROUT", 0,
"Center",
"Expand from center"},
8290 {1,
"RANDOM", 0,
"Random",
"Random tiles"},
8291 {2,
"BOTTOMUP", 0,
"Bottom Up",
"Expand from bottom"},
8292 {3,
"RULE_OF_THIRDS", 0,
"Rule of Thirds",
"Expand from 9 places"},
8321 "Colors are treated alpha premultiplied, or colors output straight (alpha gets set to 1)");
8334 "Colors are treated alpha premultiplied, or colors output straight (alpha gets set to 1)");
8369 "Balance between two non-primary channels primary channel is comparing against");
8384 "Balance between non-key colors used to detect amount of key color to be removed");
8393 "Value of non-scaled matte pixel which considers as fully background pixel");
8402 "Value of non-scaled matte pixel which considers as fully foreground pixel");
8409 prop,
"Pre Blur",
"Chroma pre-blur size which applies before running keyer");
8416 prop,
"Post Blur",
"Matte blur size which applies after clipping and dilate/eroding");
8429 prop,
"Edge Kernel Radius",
"Radius of kernel used to detect whether pixel belongs to edge");
8437 "Edge Kernel Tolerance",
8438 "Tolerance to pixels inside kernel which are treating as belonging to the same plane");
8465 "Output position of a marker relative to first marker of a track"},
8470 "Output position of a marker relative to marker at given frame number"},
8475 "Output absolute position of a marker at given frame number"},
8514 {
CMP_NODE_WRAP_X,
"XAXIS", 0,
"X Axis",
"Wrap all pixels on the X axis"},
8515 {
CMP_NODE_WRAP_Y,
"YAXIS", 0,
"Y Axis",
"Wrap all pixels on the Y axis"},
8516 {
CMP_NODE_WRAP_XY,
"BOTH", 0,
"Both Axes",
"Wrap all pixels on both axes"},
8529 "Use relative (fraction of input image size) values to define translation");
8589 prop,
"Source",
"Source point of rays as a factor of the image width and height");
8621 static float default_1[3] = {1.0f, 1.0f, 1.0f};
8625 "rna_NodeCryptomatte_matte_get",
8626 "rna_NodeCryptomatte_matte_length",
8627 "rna_NodeCryptomatte_matte_set");
8629 prop,
"Matte Objects",
"List of object and material crypto IDs to include in matte");
8637 prop,
"Add",
"Add object or material to matte, by picking a color from the Pick output");
8647 "Remove object or material from matte, by picking a color from the Pick output");
8674 prop,
"rna_NodeCryptomatte_scene_get",
"rna_NodeCryptomatte_scene_set",
NULL,
NULL);
8682 "rna_NodeCryptomatte_image_get",
8683 "rna_NodeCryptomatte_image_set",
8685 "rna_NodeCryptomatte_image_poll");
8697 "rna_NodeCryptomatte_layer_name_get",
8698 "rna_NodeCryptomatte_layer_name_set",
8699 "rna_NodeCryptomatte_layer_name_itemf");
8742 "Threshold to detect edges (smaller threshold makes more sensitive detection)");
8752 "How much to eliminate spurious edges to avoid artifacts (the larger value makes less "
8753 "active; the value 2.0, for example, means discard a detected edge if there is a "
8754 "neighboring edge that has 2.0 times bigger contrast than the current one)");
8794 prop,
"Image User",
"Parameters defining the image duration, offset and related settings");
8838 "Keep the part of the mesh that is common between all operands"},
8844 "Combine meshes in a subtractive way"},
8860 static const EnumPropertyItem rna_node_geometry_triangulate_quad_method_items[] = {
8865 "Split the quads in nice triangles, slower method"},
8870 "Split the quads on the first and third vertices"},
8875 "Split the quads on the 2nd and 4th vertices"},
8877 "SHORTEST_DIAGONAL",
8879 "Shortest Diagonal",
8880 "Split the quads based on the distance between the vertices"},
8884 static const EnumPropertyItem rna_node_geometry_triangulate_ngon_method_items[] = {
8889 "Arrange the new triangles evenly (slow)"},
8894 "Split the polygons with an ear clipping algorithm"},
8926 prop,
NC_NODE |
NA_EDITED,
"rna_GeometryNodeAttributeRandomize_data_type_update");
8932 prop,
NULL,
NULL,
"rna_GeometryNodeAttributeRandomize_operation_itemf");
9021 prop,
NC_NODE |
NA_EDITED,
"rna_GeometryNodeAttributeVectorMath_operation_update");
9033 prop,
NULL,
NULL,
"rna_GeometryNodeAttributeVectorMath_input_type_b_itemf");
9041 prop,
NULL,
NULL,
"rna_GeometryNodeAttributeVectorMath_input_type_c_itemf");
9073 "Instance an individual object on all points"},
9078 "Instance an entire collection on all points"},
9173 static const EnumPropertyItem rna_node_geometry_point_distribute_method_items[] = {
9178 "Distribute points randomly on the surface"},
9183 "Distribute the points randomly on the surface while taking a minimum distance between "
9184 "points into account"},
9215 "Rotate around an axis by an angle"},
9220 "Rotate around the X, Y, and Z axes"},
9229 "Rotate points in the local space of the object"},
9234 "Rotate every point in its local space (as defined by the 'rotation' attribute)"},
9275 "Align the X axis with the vector"},
9280 "Align the Y axis with the vector"},
9285 "Align the Z axis with the vector"},
9294 "Automatically detect the best rotation axis to rotate towards the vector"},
9299 "Rotate around the local X axis"},
9304 "Rotate around the local Y axis"},
9309 "Rotate around the local Z axis"},
9379 static const EnumPropertyItem rna_node_geometry_object_info_transform_space_items[] = {
9384 "Output the geometry relative to the input object transform, and the location, rotation "
9386 "scale relative to the world origin"},
9391 "Bring the input object geometry, location, rotation and scale into the modified object, "
9392 "maintaining the relative position between the two objects in the scene"},
9401 prop,
"Transform Space",
"The transformation of the vector and geometry outputs");
9414 "Specify the approximate number of voxels along the diagonal"},
9419 "Specify the voxel side length"},
9440 static const EnumPropertyItem rna_node_geometry_collection_info_transform_space_items[] = {
9445 "Output the geometry relative to the collection offset"},
9450 "Bring the input collection geometry into the modified object, maintaining the relative "
9451 "position between the objects in the scene"},
9470 "Calculate proximity to the target's points (usually faster than the other two modes)"},
9475 "Calculate proximity to the target's edges"},
9480 "Calculate proximity to the target's faces"},
9492 prop,
"Target Geometry",
"Element of the target geometry to calculate the distance from");
9505 "Use resolution of the volume grid"},
9510 "Desired number of voxels along one axis"},
9515 "Desired voxel side length"},
9606 "Specify the offset from one vertex to the next"},
9611 "Specify the line's start and end points"},
9620 "Specify the total number of vertices"},
9625 "Specify the distance between vertices"},
9665 func =
RNA_def_function(srna,
"tag_need_exec",
"rna_CompositorNode_tag_need_exec");
9710 static float default_draw_color[] = {0.0f, 0.0f, 0.0f, 1.0f};
9719 srna,
"rna_NodeSocket_register",
"rna_NodeSocket_unregister",
NULL);
9774 prop,
"Multi Input",
"True if the socket can accept multiple ordered input links");
9850 func,
"color", 4, default_draw_color, 0.0f, 1.0f,
"Color",
"", 0.0f, 1.0f);
9861 static float default_draw_color[] = {0.0f, 0.0f, 0.0f, 1.0f};
9874 srna,
"rna_NodeSocketInterface_register",
"rna_NodeSocketInterface_unregister",
NULL);
9900 prop,
"Hide Value",
"Hide the socket input value even when the socket is not connected");
9925 func,
"color", 4, default_draw_color, 0.0f, 1.0f,
"Color",
"", 0.0f, 1.0f);
9932 func,
"data_rna_type",
"Struct",
"Data RNA Type",
"RNA type for special socket properties");
9938 parm =
RNA_def_pointer(func,
"node",
"Node",
"Node",
"Node of the socket to initialize");
9940 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"Socket",
"Socket to initialize");
9943 func,
"data_path",
NULL, 0,
"Data Path",
"Path to specialized socket data");
9949 parm =
RNA_def_pointer(func,
"node",
"Node",
"Node",
"Node of the original socket");
9951 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"Socket",
"Original socket");
9957 const char *interface_idname,
9962 float value_default;
9967 value_default = 1.0f;
9970 value_default = 100.0f;
9973 value_default = 0.0f;
9993 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
9995 srna,
"Float Node Socket Interface",
"Floating-point number socket of a node");
10024 const char *identifier,
10025 const char *interface_idname,
10038 value_default = 100;
10062 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10091 const char *identifier,
10092 const char *interface_idname)
10112 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10128 const char *identifier,
10129 const char *interface_idname,
10134 const float *value_default;
10139 static const float default_direction[3] = {0.0f, 0.0f, 1.0f};
10140 value_default = default_direction;
10144 static const float default_vector[3] = {0.0f, 0.0f, 0.0f};
10145 value_default = default_vector;
10167 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10196 const char *identifier,
10197 const char *interface_idname)
10217 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10233 const char *identifier,
10234 const char *interface_idname)
10254 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10270 const char *identifier,
10271 const char *interface_idname)
10280 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10295 const char *identifier,
10296 const char *interface_idname)
10312 prop,
NC_NODE |
NA_EDITED,
"rna_NodeSocketStandard_value_and_relation_update");
10316 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10330 const char *identifier,
10331 const char *interface_idname)
10347 prop,
NC_NODE |
NA_EDITED,
"rna_NodeSocketStandard_value_and_relation_update");
10351 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10365 const char *identifier,
10366 const char *interface_idname)
10374 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10380 const char *identifier,
10381 const char *interface_idname)
10397 prop,
NC_NODE |
NA_EDITED,
"rna_NodeSocketStandard_value_and_relation_update");
10401 srna =
RNA_def_struct(brna, interface_idname,
"NodeSocketInterfaceStandard");
10428 static float default_draw_color[] = {0.0f, 0.0f, 0.0f, 1.0f};
10430 srna =
RNA_def_struct(brna,
"NodeSocketStandard",
"NodeSocket");
10452 func =
RNA_def_function(srna,
"draw_color",
"rna_NodeSocketStandard_draw_color");
10462 func,
"color", 4, default_draw_color, 0.0f, 1.0f,
"Color",
"", 0.0f, 1.0f);
10465 srna =
RNA_def_struct(brna,
"NodeSocketInterfaceStandard",
"NodeSocketInterface");
10476 func =
RNA_def_function(srna,
"draw",
"rna_NodeSocketInterfaceStandard_draw");
10486 func =
RNA_def_function(srna,
"draw_color",
"rna_NodeSocketInterfaceStandard_draw_color");
10492 func,
"color", 4, default_draw_color, 0.0f, 1.0f,
"Color",
"", 0.0f, 1.0f);
10503 brna,
"NodeSocketFloatUnsigned",
"NodeSocketInterfaceFloatUnsigned",
PROP_UNSIGNED);
10505 brna,
"NodeSocketFloatPercentage",
"NodeSocketInterfaceFloatPercentage",
PROP_PERCENTAGE);
10507 brna,
"NodeSocketFloatFactor",
"NodeSocketInterfaceFloatFactor",
PROP_FACTOR);
10509 brna,
"NodeSocketFloatAngle",
"NodeSocketInterfaceFloatAngle",
PROP_ANGLE);
10511 brna,
"NodeSocketFloatTime",
"NodeSocketInterfaceFloatTime",
PROP_TIME);
10513 brna,
"NodeSocketFloatDistance",
"NodeSocketInterfaceFloatDistance",
PROP_DISTANCE);
10517 brna,
"NodeSocketIntUnsigned",
"NodeSocketInterfaceIntUnsigned",
PROP_UNSIGNED);
10519 brna,
"NodeSocketIntPercentage",
"NodeSocketInterfaceIntPercentage",
PROP_PERCENTAGE);
10521 brna,
"NodeSocketIntFactor",
"NodeSocketInterfaceIntFactor",
PROP_FACTOR);
10527 "NodeSocketVectorTranslation",
10528 "NodeSocketInterfaceVectorTranslation",
10531 brna,
"NodeSocketVectorDirection",
"NodeSocketInterfaceVectorDirection",
PROP_DIRECTION);
10533 brna,
"NodeSocketVectorVelocity",
"NodeSocketInterfaceVectorVelocity",
PROP_VELOCITY);
10535 "NodeSocketVectorAcceleration",
10536 "NodeSocketInterfaceVectorAcceleration",
10539 brna,
"NodeSocketVectorEuler",
"NodeSocketInterfaceVectorEuler",
PROP_EULER);
10541 brna,
"NodeSocketVectorXYZ",
"NodeSocketInterfaceVectorXYZ",
PROP_XYZ);
10571 "rna_NodeInternalSocketTemplate_name_get",
10572 "rna_NodeInternalSocketTemplate_name_length",
10579 "rna_NodeInternalSocketTemplate_identifier_get",
10580 "rna_NodeInternalSocketTemplate_identifier_length",
10606 func,
"If non-null output is returned, the node type can be added to the tree");
10609 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10612 func =
RNA_def_function(srna,
"poll_instance",
"rna_NodeInternal_poll_instance");
10614 func,
"If non-null output is returned, the node can be added to the tree");
10616 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10622 func,
"Update on node graph topology changes (adding or removing nodes and links)");
10626 func =
RNA_def_function(srna,
"draw_buttons",
"rna_NodeInternal_draw_buttons");
10637 func =
RNA_def_function(srna,
"draw_buttons_ext",
"rna_NodeInternal_draw_buttons_ext");
10653 const char *structtype = (in_out ==
SOCK_IN ?
"NodeInputs" :
"NodeOutputs");
10654 const char *uiname = (in_out ==
SOCK_IN ?
"Node Inputs" :
"Node Outputs");
10655 const char *newfunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_new" :
"rna_Node_outputs_new");
10656 const char *clearfunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_clear" :
"rna_Node_outputs_clear");
10657 const char *movefunc = (in_out ==
SOCK_IN ?
"rna_Node_inputs_move" :
"rna_Node_outputs_move");
10673 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"New socket");
10679 parm =
RNA_def_pointer(func,
"socket",
"NodeSocket",
"",
"The socket to remove");
10690 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the socket to move", 0, 10000);
10693 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the socket", 0, 10000);
10705 {
NODE_CUSTOM,
"CUSTOM", 0,
"Custom",
"Custom Node"},
10727 "Node type (deprecated, use bl_static_type or bl_idname for the actual identifier string)");
10787 prop,
"Internal Links",
"Internal input-to-output connections for muting");
10848 func =
RNA_def_function(srna,
"socket_value_update",
"rna_Node_socket_value_update");
10854 func =
RNA_def_function(srna,
"is_registered_node_type",
"rna_Node_is_registered_node_type");
10918 func,
"If non-null output is returned, the node type can be added to the tree");
10921 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10926 func,
"If non-null output is returned, the node can be added to the tree");
10929 parm =
RNA_def_pointer(func,
"node_tree",
"NodeTree",
"Node Tree",
"");
10935 func,
"Update on node graph topology changes (adding or removing nodes and links)");
10942 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"Link",
"Node link that will be inserted");
10955 "Initialize a new instance of this node from an existing node");
10957 parm =
RNA_def_pointer(func,
"node",
"Node",
"Node",
"Existing node to copy");
11079 "Type of node to add (Warning: should be same as node.bl_idname, not node.type!)");
11088 parm =
RNA_def_pointer(func,
"node",
"Node",
"",
"The node to remove");
11099 prop,
"rna_NodeTree_active_node_get",
"rna_NodeTree_active_node_set",
NULL,
NULL);
11119 parm =
RNA_def_pointer(func,
"input",
"NodeSocket",
"",
"The input socket");
11121 parm =
RNA_def_pointer(func,
"output",
"NodeSocket",
"",
"The output socket");
11127 "Remove existing links if connection limit is exceeded");
11129 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"",
"New node link");
11135 parm =
RNA_def_pointer(func,
"link",
"NodeLink",
"",
"The node link to remove");
11149 const char *structtype = (in_out ==
SOCK_IN ?
"NodeTreeInputs" :
"NodeTreeOutputs");
11150 const char *uiname = (in_out ==
SOCK_IN ?
"Node Tree Inputs" :
"Node Tree Outputs");
11151 const char *newfunc = (in_out ==
SOCK_IN ?
"rna_NodeTree_inputs_new" :
11152 "rna_NodeTree_outputs_new");
11153 const char *clearfunc = (in_out ==
SOCK_IN ?
"rna_NodeTree_inputs_clear" :
11154 "rna_NodeTree_outputs_clear");
11155 const char *movefunc = (in_out ==
SOCK_IN ?
"rna_NodeTree_inputs_move" :
11156 "rna_NodeTree_outputs_move");
11171 parm =
RNA_def_pointer(func,
"socket",
"NodeSocketInterface",
"",
"New socket");
11177 parm =
RNA_def_pointer(func,
"socket",
"NodeSocketInterface",
"",
"The socket to remove");
11188 func,
"from_index", -1, 0, INT_MAX,
"From Index",
"Index of the socket to move", 0, 10000);
11191 func,
"to_index", -1, 0, INT_MAX,
"To Index",
"Target index for the socket", 0, 10000);
11203 {
NTREE_SHADER,
"SHADER", ICON_MATERIAL,
"Shader",
"Shader nodes"},
11204 {
NTREE_TEXTURE,
"TEXTURE", ICON_TEXTURE,
"Texture",
"Texture nodes"},
11205 {
NTREE_COMPOSIT,
"COMPOSITING", ICON_RENDERLAYERS,
"Compositing",
"Compositing nodes"},
11206 {
NTREE_GEOMETRY,
"GEOMETRY", ICON_NODETREE,
"Geometry",
"Geometry nodes"},
11214 "Node tree consisting of linked nodes used for shading, textures and compositing");
11247 prop,
NULL,
NULL,
NULL,
"rna_GPencil_datablocks_annotations_poll");
11258 "Node Tree type (deprecated, bl_idname is the actual node tree type identifier)");
11269 prop,
"rna_NodeTree_active_input_get",
"rna_NodeTree_active_input_set",
NULL);
11282 prop,
"rna_NodeTree_active_output_get",
"rna_NodeTree_active_output_set",
NULL);
11287 func =
RNA_def_function(srna,
"interface_update",
"rna_NodeTree_interface_update");
11334 func,
"result_1",
"NodeTree",
"Node Tree",
"Active node tree from context");
11337 func,
"result_2",
"ID",
"Owner ID",
"ID data-block that owns the node tree");
11340 func,
"result_3",
"ID",
"From ID",
"Original ID data-block selected from the context");
11351 srna,
"Compositor Node Tree",
"Node tree consisting of linked nodes used for compositing");
11370 "Max size of a tile (smaller values gives better distribution "
11371 "of multiple threads, but more overhead)");
11385 "Use two pass execution during editing: first calculate fast nodes, "
11386 "second pass calculate all nodes");
11391 prop,
"Viewer Region",
"Use boundaries for viewer nodes and composite backdrop");
11404 "Shader Node Tree",
11405 "Node tree consisting of linked nodes used for materials (and other shading data-blocks)");
11409 func =
RNA_def_function(srna,
"get_output_node",
"ntreeShaderOutputNode");
11411 "Return active shader output node for the specified target");
11425 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");
11442 const char *struct_name,
11443 const char *base_name,
11444 const char *ui_name,
11445 const char *ui_desc,
11454 if (
STREQ(base_name,
"Node")) {
11455 base_name =
"NodeInternal";
11462 func =
RNA_def_function(srna,
"is_registered_node_type",
"rna_Node_is_registered_node_type");
11471 func =
RNA_def_function(srna,
"input_template",
"rna_NodeInternal_input_template");
11482 func =
RNA_def_function(srna,
"output_template",
"rna_NodeInternal_output_template");
11539 # define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
11541 srna = define_specific_node( \
11542 brna, #Category #StructName, #Category, UIName, UIDesc, DefFunc); \
11543 if (ID == CMP_NODE_OUTPUT_FILE) { \
11545 def_cmp_output_file(brna, srna); \
11552 # include "../../nodes/NOD_static_types.h"
11562 "ShaderNodeCustomGroup",
11564 "Shader Custom Group",
11565 "Custom Shader Group Node for Python nodes",
11566 "rna_ShaderNodeCustomGroup_register");
11568 "CompositorNodeCustomGroup",
11570 "Compositor Custom Group",
11571 "Custom Compositor Group Node for Python nodes",
11572 "rna_CompositorNodeCustomGroup_register");
11577 "Base node type for custom registered node group types",
11578 "rna_NodeCustomGroup_register");
11580 "GeometryNodeCustomGroup",
11582 "Geometry Custom Group",
11583 "Custom Geometry Group Node for Python nodes",
11584 "rna_GeometryNodeCustomGroup_register");
11594 # undef NODE_DEFINE_SUBTYPES
void BKE_animdata_fix_paths_rename_all(struct ID *ref_id, const char *prefix, const char *oldName, const char *newName)
Generic geometry attributes built on CustomData.
struct Scene * CTX_data_scene(const bContext *C)
PointerRNA CTX_data_pointer_get(const bContext *C, const char *member)
struct 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)
struct IDProperty * IDP_New(const char type, const IDPropertyTemplate *val, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
struct RenderPass * BKE_image_multilayer_index(struct RenderResult *rr, struct ImageUser *iuser)
#define IMA_SIGNAL_SRC_CHANGE
void BKE_image_signal(struct Main *bmain, struct Image *ima, struct ImageUser *iuser, int signal)
void id_us_min(struct ID *id)
void id_us_plus(struct ID *id)
const char * BKE_main_blendfile_path_from_global(void)
#define CMP_SCALE_ABSOLUTE
void ntreeTypeAdd(struct bNodeTreeType *nt)
#define NODE_TYPES_BEGIN(ntype)
void nodeUniqueName(struct bNodeTree *ntree, struct bNode *node)
#define CMP_SCALE_SCENEPERCENT
void nodeRegisterSocketType(struct bNodeSocketType *stype)
#define CMP_TRACKPOS_ABSOLUTE_FRAME
bool nodeLinkIsHidden(const struct bNodeLink *link)
bool nodeAttachNodeCheck(const struct bNode *node, const struct bNode *parent)
struct bNodeSocket * nodeAddSocket(struct bNodeTree *ntree, struct bNode *node, eNodeSocketInOut in_out, const char *idname, const char *identifier, const char *name)
bool nodeGroupPoll(struct bNodeTree *nodetree, struct bNodeTree *grouptree, const char **r_disabled_hint)
#define CMP_SCALE_RENDERSIZE_FRAME_CROP
void nodeRemSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock)
#define NODE_CUSTOM_GROUP
void ntreeCompositColorBalanceSyncFromCDL(bNodeTree *ntree, bNode *node)
struct bNodeTreeType * ntreeTypeFind(const char *idname)
#define CMP_TRACKPOS_RELATIVE_START
#define CMP_TRACKPOS_RELATIVE_FRAME
struct StructRNA * ntreeInterfaceTypeGet(struct bNodeTree *ntree, bool create)
void ntreeCompositColorBalanceSyncFromLGG(bNodeTree *ntree, bNode *node)
void node_type_base_custom(struct bNodeType *ntype, const char *idname, const char *name, short nclass, short flag)
void ntreeCompositUpdateRLayers(struct bNodeTree *ntree)
#define SH_NODE_TEX_ENVIRONMENT
void nodeUpdate(struct bNodeTree *ntree, struct bNode *node)
void ntreeRemoveSocketInterface(struct bNodeTree *ntree, struct bNodeSocket *sock)
void nodeAttachNode(struct bNode *node, struct bNode *parent)
struct bNode * nodeGetActive(struct bNodeTree *ntree)
void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link)
#define CMP_SCALE_RENDERSIZE_FRAME_ASPECT
#define CMP_SCALE_RENDERPERCENT
void nodeRemoveNode(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node, bool do_id_user)
struct bNodeSocket * ntreeCompositOutputFileAddSocket(struct bNodeTree *ntree, struct bNode *node, const char *name, struct ImageFormatData *im_format)
void ntreeUpdateTree(struct Main *main, struct bNodeTree *ntree)
#define CMP_SCALE_RELATIVE
void ntreeCompositCryptomatteSyncFromRemove(bNode *node)
void ntreeCompositOutputFileSetPath(struct bNode *node, struct bNodeSocket *sock, const char *name)
int nodeSocketLinkLimit(const struct bNodeSocket *sock)
void ntreeTexCheckCyclics(struct bNodeTree *ntree)
struct bNodeType * nodeTypeFind(const char *idname)
#define NODE_TREE_TYPES_BEGIN(ntype)
struct bNodeLink * nodeAddLink(struct bNodeTree *ntree, struct bNode *fromnode, struct bNodeSocket *fromsock, struct bNode *tonode, struct bNodeSocket *tosock)
void nodeClearActive(struct bNodeTree *ntree)
void nodeRemoveSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock)
#define NODE_SOCKET_TYPES_BEGIN(stype)
void ntreeCompositCryptomatteSyncFromAdd(const Scene *scene, bNode *node)
struct bNode * nodeAddNode(const struct bContext *C, struct bNodeTree *ntree, const char *idname)
void ntreeTypeFreeLink(const struct bNodeTreeType *nt)
bool ntreeIsRegistered(struct bNodeTree *ntree)
void nodeSetSelected(struct bNode *node, bool select)
#define CMP_CRYPTOMATTE_SRC_RENDER
#define NODE_TREE_TYPES_END
void ntreeCompositOutputFileSetLayer(struct bNode *node, struct bNodeSocket *sock, const char *name)
bool nodeFindNode(struct bNodeTree *ntree, struct bNodeSocket *sock, struct bNode **r_node, int *r_sockindex)
void nodeUnregisterSocketType(struct bNodeSocketType *stype)
struct bNodeSocket * ntreeAddSocketInterface(struct bNodeTree *ntree, eNodeSocketInOut in_out, const char *idname, const char *name)
#define NODE_SOCKET_TYPES_END
int nodeCountSocketLinks(const struct bNodeTree *ntree, const struct bNodeSocket *sock)
void nodeDetachNode(struct bNode *node)
#define CMP_CRYPTOMATTE_SRC_IMAGE
struct bNodeSocketType * nodeSocketTypeFind(const char *idname)
void nodeUnregisterType(struct bNodeType *ntype)
void nodeRegisterType(struct bNodeType *ntype)
void nodeSetActive(struct bNodeTree *ntree, struct bNode *node)
#define CMP_TRACKPOS_ABSOLUTE
void nodeModifySocketType(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock, int type, int subtype)
void ntreeCompositCryptomatteUpdateLayerNames(const Scene *scene, bNode *node)
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_texture_pointdensity_init_data(struct PointDensity *pd)
void BKE_texture_pointdensity_free_data(struct PointDensity *pd)
void BLI_kdtree_nd_() free(KDTree *tree)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
int BLI_listbase_count_at_most(const struct ListBase *listbase, const 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)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void zero_v3(float r[3])
void BLI_path_rel(char *file, const char *relfile) ATTR_NONNULL()
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
#define STRNCPY(dst, src)
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, const size_t dst_maxncpy) ATTR_NONNULL()
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
#define STREQLEN(a, b, n)
#define SET_FLAG_FROM_TEST(value, test, flag)
#define BLT_I18NCONTEXT_ID_CURVE
#define BLT_I18NCONTEXT_ID_NODETREE
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ VOLUME_TO_MESH_RESOLUTION_MODE_VOXEL_SIZE
@ VOLUME_TO_MESH_RESOLUTION_MODE_GRID
@ VOLUME_TO_MESH_RESOLUTION_MODE_VOXEL_AMOUNT
#define SHD_HAIR_TRANSMISSION
@ 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_MINIMUM
@ GEO_NODE_MESH_CIRCLE_FILL_NGON
@ GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN
@ GEO_NODE_MESH_CIRCLE_FILL_NONE
#define CMP_NODE_BLUR_ASPECT_X
@ GEO_NODE_TRIANGULATE_QUAD_SHORTEDGE
@ GEO_NODE_TRIANGULATE_QUAD_BEAUTY
@ GEO_NODE_TRIANGULATE_QUAD_ALTERNATE
@ GEO_NODE_TRIANGULATE_QUAD_FIXED
#define SHD_GLOSSY_ASHIKHMIN_SHIRLEY
#define SHD_BLEND_DIAGONAL
#define NTREE_QUALITY_LOW
#define CMP_NODE_PLANETRACKDEFORM_MBLUR_SAMPLES_MAX
#define NODE_ACTIVE_PREVIEW
@ GEO_NODE_ATTRIBUTE_RANDOMIZE_MULTIPLY
@ GEO_NODE_ATTRIBUTE_RANDOMIZE_SUBTRACT
@ GEO_NODE_ATTRIBUTE_RANDOMIZE_REPLACE_CREATE
@ GEO_NODE_ATTRIBUTE_RANDOMIZE_ADD
@ SHD_POINTDENSITY_COLOR_VERTNOR
@ SHD_POINTDENSITY_COLOR_VERTWEIGHT
@ SHD_POINTDENSITY_COLOR_VERTCOL
#define SHD_PROJ_EQUIRECTANGULAR
#define SHD_TANGENT_AXIS_Z
@ GEO_NODE_POINT_INSTANCE_WHOLE_COLLECTION
@ CMP_NODEFLAG_BLUR_VARIABLE_SIZE
@ CMP_NODEFLAG_BLUR_EXTEND_BOUNDS
#define CMP_NODE_CHANNEL_MATTE_CS_HSV
#define NODE_CUSTOM_COLOR
#define NTREE_CHUNKSIZE_512
#define SHD_VECT_TRANSFORM_TYPE_VECTOR
#define NTREE_CHUNKSIZE_128
#define SHD_VECT_TRANSFORM_TYPE_NORMAL
#define SHD_HAIR_REFLECTION
#define SHD_TANGENT_AXIS_X
#define NTREE_QUALITY_MEDIUM
#define SHD_MUSGRAVE_MULTIFRACTAL
@ GEO_NODE_POINT_DISTRIBUTE_POISSON
@ GEO_NODE_POINT_DISTRIBUTE_RANDOM
@ NODE_MAPPING_TYPE_POINT
@ NODE_MAPPING_TYPE_VECTOR
@ NODE_MAPPING_TYPE_TEXTURE
@ NODE_MAPPING_TYPE_NORMAL
@ SHD_WAVE_RINGS_DIRECTION_Z
@ SHD_WAVE_RINGS_DIRECTION_Y
@ SHD_WAVE_RINGS_DIRECTION_X
@ SHD_WAVE_RINGS_DIRECTION_SPHERICAL
#define CMP_NODE_CHANNEL_MATTE_CS_YUV
@ GEO_NODE_POINT_ROTATE_SPACE_POINT
@ GEO_NODE_POINT_ROTATE_SPACE_OBJECT
#define SHD_PRINCIPLED_HAIR_DIRECT_ABSORPTION
#define NODE_SCRIPT_EXTERNAL
@ GEO_NODE_TRIANGULATE_NGON_EARCLIP
@ GEO_NODE_TRIANGULATE_NGON_BEAUTY
@ CMP_NODEFLAG_PLANETRACKDEFORM_MOTION_BLUR
@ 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
#define CMP_NODE_BLUR_ASPECT_Y
#define CMP_NODE_CHANNEL_MATTE_CS_RGB
@ CMP_NODEFLAG_STABILIZE_INVERSE
#define SHD_BLEND_SPHERICAL
#define SHD_MUSGRAVE_RIDGED_MULTIFRACTAL
@ GEO_NODE_MESH_LINE_COUNT_RESOLUTION
@ GEO_NODE_MESH_LINE_COUNT_TOTAL
#define NODE_ACTIVE_TEXTURE
#define SHD_VECT_TRANSFORM_TYPE_POINT
#define SHD_MIXRGB_USE_ALPHA
@ GEO_NODE_ALIGN_ROTATION_TO_VECTOR_PIVOT_AXIS_X
@ GEO_NODE_ALIGN_ROTATION_TO_VECTOR_PIVOT_AXIS_Z
@ GEO_NODE_ALIGN_ROTATION_TO_VECTOR_PIVOT_AXIS_AUTO
@ GEO_NODE_ALIGN_ROTATION_TO_VECTOR_PIVOT_AXIS_Y
@ CMP_NODE_DILATEERODE_STEP
@ CMP_NODE_DILATEERODE_DISTANCE_THRESH
@ CMP_NODE_DILATEERODE_DISTANCE_FEATHER
@ CMP_NODE_DILATEERODE_DISTANCE
#define SHD_IMAGE_EXTENSION_CLIP
#define NTREE_VIEWER_BORDER
@ SHD_ATTRIBUTE_INSTANCER
#define SHD_VECT_TRANSFORM_SPACE_OBJECT
#define SHD_IMAGE_EXTENSION_EXTEND
#define NTREE_COM_GROUPNODE_BUFFER
#define CMP_NODE_IMAGE_USE_STRAIGHT_OUTPUT
#define CMP_NODE_WRAP_NONE
#define SHD_IMAGE_EXTENSION_REPEAT
#define CMP_NODE_BLUR_ASPECT_NONE
#define SHD_PRINCIPLED_HAIR_REFLECTANCE
@ SHD_WAVE_BANDS_DIRECTION_Y
@ SHD_WAVE_BANDS_DIRECTION_X
@ SHD_WAVE_BANDS_DIRECTION_Z
@ SHD_WAVE_BANDS_DIRECTION_DIAGONAL
@ GEO_NODE_ATTRIBUTE_PROXIMITY_TARGET_GEOMETRY_ELEMENT_FACES
@ GEO_NODE_ATTRIBUTE_PROXIMITY_TARGET_GEOMETRY_ELEMENT_POINTS
@ GEO_NODE_ATTRIBUTE_PROXIMITY_TARGET_GEOMETRY_ELEMENT_EDGES
@ SHD_VORONOI_DISTANCE_TO_EDGE
@ SHD_VORONOI_N_SPHERE_RADIUS
#define SHD_SPACE_TANGENT
#define NTREE_QUALITY_HIGH
@ SHD_SUBSURFACE_GAUSSIAN
@ SHD_SUBSURFACE_RANDOM_WALK
@ SHD_POINTDENSITY_SOURCE_PSYS
@ SHD_POINTDENSITY_SOURCE_OBJECT
#define SHD_VECT_TRANSFORM_SPACE_CAMERA
@ CMP_NODE_SETALPHA_MODE_REPLACE_ALPHA
@ CMP_NODE_SETALPHA_MODE_APPLY
@ GEO_NODE_POINT_ROTATE_TYPE_EULER
@ GEO_NODE_POINT_ROTATE_TYPE_AXIS_ANGLE
@ SHD_POINTDENSITY_SPACE_WORLD
@ SHD_POINTDENSITY_SPACE_OBJECT
#define CMP_NODE_MASK_MBLUR_SAMPLES_MAX
@ NODE_MAP_RANGE_SMOOTHERSTEP
@ NODE_MAP_RANGE_SMOOTHSTEP
@ GEO_NODE_MESH_LINE_MODE_END_POINTS
@ GEO_NODE_MESH_LINE_MODE_OFFSET
#define CMP_NODE_CHANNEL_MATTE_CS_YCC
#define NODE_FRAME_SHRINK
@ CMP_NODEFLAG_MASK_FIXED_SCENE
@ CMP_NODEFLAG_MASK_NO_FEATHER
@ CMP_NODEFLAG_MASK_FIXED
@ CMP_NODEFLAG_MASK_MOTION_BLUR
#define SHD_GLOSSY_BECKMANN
@ GEO_NODE_POINT_INSTANCE_TYPE_OBJECT
@ GEO_NODE_POINT_INSTANCE_TYPE_COLLECTION
@ GEO_NODE_ALIGN_ROTATION_TO_VECTOR_AXIS_Y
@ GEO_NODE_ALIGN_ROTATION_TO_VECTOR_AXIS_Z
@ GEO_NODE_ALIGN_ROTATION_TO_VECTOR_AXIS_X
@ SOCK_DISPLAY_SHAPE_CIRCLE_DOT
@ SOCK_DISPLAY_SHAPE_CIRCLE
@ SOCK_DISPLAY_SHAPE_SQUARE_DOT
@ SOCK_DISPLAY_SHAPE_SQUARE
@ SOCK_DISPLAY_SHAPE_DIAMOND
@ SOCK_DISPLAY_SHAPE_DIAMOND_DOT
#define SHD_TANGENT_UVMAP
@ GEO_NODE_POINTS_TO_VOLUME_RESOLUTION_MODE_AMOUNT
@ GEO_NODE_POINTS_TO_VOLUME_RESOLUTION_MODE_SIZE
@ NODE_FLOAT_COMPARE_GREATER_THAN
@ NODE_FLOAT_COMPARE_GREATER_EQUAL
@ NODE_FLOAT_COMPARE_EQUAL
@ NODE_FLOAT_COMPARE_LESS_EQUAL
@ NODE_FLOAT_COMPARE_LESS_THAN
@ NODE_FLOAT_COMPARE_NOT_EQUAL
#define SHD_SPACE_BLENDER_OBJECT
#define NTREE_CHUNKSIZE_256
#define SHD_SPACE_BLENDER_WORLD
#define NTREE_CHUNKSIZE_32
#define NODE_SCRIPT_AUTO_UPDATE
#define SHD_PROJ_MIRROR_BALL
#define SHD_BLEND_QUADRATIC
#define NTREE_CHUNKSIZE_1024
@ GEO_NODE_BOOLEAN_DIFFERENCE
@ GEO_NODE_BOOLEAN_INTERSECT
#define SHD_MUSGRAVE_HYBRID_MULTIFRACTAL
#define NODE_IES_EXTERNAL
#define SHD_BLEND_QUADRATIC_SPHERE
@ SHD_POINTDENSITY_COLOR_PARTSPEED
@ SHD_POINTDENSITY_COLOR_PARTVEL
@ SHD_POINTDENSITY_COLOR_PARTAGE
#define SHD_VECT_TRANSFORM_SPACE_WORLD
#define SHD_GLOSSY_MULTI_GGX
#define SHD_INTERP_CLOSEST
#define NODE_SCRIPT_INTERNAL
@ GEO_NODE_TRANSFORM_SPACE_RELATIVE
@ GEO_NODE_TRANSFORM_SPACE_ORIGINAL
#define SHD_TANGENT_AXIS_Y
#define SHD_TANGENT_RADIAL
#define SHD_MUSGRAVE_HETERO_TERRAIN
#define NTREE_CHUNKSIZE_64
#define NODE_IES_INTERNAL
@ GEO_NODE_ATTRIBUTE_INPUT_VECTOR
@ GEO_NODE_ATTRIBUTE_INPUT_ATTRIBUTE
@ GEO_NODE_ATTRIBUTE_INPUT_FLOAT
#define CMP_NODE_OUTPUT_IGNORE_ALPHA
#define SHD_PRINCIPLED_HAIR_PIGMENT_CONCENTRATION
#define SHD_INTERP_LINEAR
Object is a sort of wrapper for general info.
#define R_FILTER_FAST_GAUSS
#define TEX_PD_OBJECTSPACE
@ TEX_PD_COLOR_VERTWEIGHT
void ED_init_custom_node_socket_type(struct bNodeSocketType *stype)
void ED_node_tag_update_nodetree(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node)
void ED_init_custom_node_type(struct bNodeType *ntype)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
void register_node_type_sh_custom_group(bNodeType *ntype)
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner CMP_NODE_CRYPTOMATTE
Group RGB to Bright Vector Camera CLAMP
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume SH_NODE_TEX_IMAGE
#define RNA_POINTER_INVALIDATE(ptr)
StructRNA RNA_NodeOutputFileSlotFile
StructRNA RNA_NodeOutputFileSlotLayer
StructRNA RNA_GeometryNode
StructRNA RNA_ParticleSystem
StructRNA RNA_CompositorNode
StructRNA RNA_FunctionNode
StructRNA RNA_TextureNode
StructRNA RNA_NodeSocketInterface
struct bNodeSocketType * rna_node_socket_type_from_enum(int value)
const EnumPropertyItem * rna_node_tree_type_itemf(void *data, bool(*poll)(void *data, struct bNodeTreeType *), bool *r_free)
struct bNodeTreeType * rna_node_tree_type_from_enum(int value)
int rna_node_socket_idname_to_enum(const char *idname)
int rna_node_socket_type_to_enum(struct bNodeSocketType *typeinfo)
const EnumPropertyItem * rna_node_type_itemf(void *data, bool(*poll)(void *data, struct bNodeType *), bool *r_free)
int rna_node_tree_idname_to_enum(const char *idname)
int rna_node_type_to_enum(struct bNodeType *typeinfo)
const EnumPropertyItem * rna_node_socket_type_itemf(void *data, bool(*poll)(void *data, struct bNodeSocketType *), bool *r_free)
struct bNodeType * rna_node_type_from_enum(int value)
int rna_node_idname_to_enum(const char *idname)
int rna_node_tree_type_to_enum(struct bNodeTreeType *typeinfo)
void(* StructFreeFunc)(void *data)
int(* StructValidateFunc)(struct PointerRNA *ptr, void *data, int *have_function)
int(* StructCallbackFunc)(struct bContext *C, struct PointerRNA *ptr, struct FunctionRNA *func, ParameterList *list)
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROPOVERRIDE_NO_COMPARISON
return(oflags[bm->toolflag_index].f &oflag) !=0
SIMD_FORCE_INLINE btScalar length(const btQuaternion &q)
Return the length of a quaternion.
const Depsgraph * depsgraph
RenderEngine * RE_engine_create(RenderEngineType *type)
RenderEngineType * RE_engines_find(const char *idname)
void RE_engine_free(RenderEngine *engine)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
void node_group_update(struct bNodeTree *ntree, struct bNode *node)
void register_node_type_cmp_custom_group(bNodeType *ntype)
void register_node_type_geo_custom_group(bNodeType *ntype)
static const EnumPropertyItem mode_items[]
bool RE_layers_have_name(struct RenderResult *rr)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *UNUSED(ptr), FunctionRNA *func)
const char * RNA_struct_ui_description(const StructRNA *type)
const char * RNA_struct_ui_name(const StructRNA *type)
const PointerRNA PointerRNA_NULL
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)
int RNA_struct_ui_icon(const StructRNA *type)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *data)
void * rna_iterator_listbase_get(CollectionPropertyIterator *iter)
void rna_def_animdata_common(StructRNA *srna)
const EnumPropertyItem rna_enum_attribute_domain_with_auto_items[]
const EnumPropertyItem rna_enum_attribute_type_items[]
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)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
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)
PropertyRNA * RNA_def_float_array(StructOrFunctionRNA *cont_, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
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)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
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_function_output(FunctionRNA *UNUSED(func), PropertyRNA *ret)
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)
void RNA_def_property_int_default(PropertyRNA *prop, int value)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
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)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_struct_name_property(struct StructRNA *srna, struct PropertyRNA *prop)
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)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
FunctionRNA * RNA_def_function_runtime(StructRNA *srna, const char *identifier, CallFunc call)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
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_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
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)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
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)
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)
char * rna_Node_ImageUser_path(struct PointerRNA *ptr)
StructRNA RNA_PropertyGroup
const EnumPropertyItem rna_enum_ramp_blend_items[]
const EnumPropertyItem rna_enum_axis_xy_items[]
static const EnumPropertyItem sh_tex_prop_interpolation_items[]
static void def_tex_output(StructRNA *srna)
static void def_geo_attribute_fill(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 void def_refraction(StructRNA *srna)
static void def_geo_boolean(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 const EnumPropertyItem rna_node_geometry_attribute_input_type_items_any[]
static void def_cmp_flip(StructRNA *srna)
static EnumPropertyItem node_ies_mode_items[]
static void def_geo_attribute_randomize(StructRNA *srna)
static void def_group(StructRNA *srna)
static void rna_def_node_socket_virtual(BlenderRNA *brna, const char *identifier)
static void rna_def_texture_node(BlenderRNA *brna)
static void def_geo_attribute_mix(StructRNA *srna)
static void def_rgb_curve(StructRNA *srna)
static void def_sh_tex_image(StructRNA *srna)
static void def_geo_point_scale(StructRNA *srna)
static const EnumPropertyItem rna_node_geometry_attribute_input_type_items_float[]
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)
static void rna_def_node_link(BlenderRNA *brna)
static void def_sh_tex_checker(StructRNA *srna)
static void def_geo_align_rotation_to_vector(StructRNA *srna)
static const EnumPropertyItem prop_image_view_items[]
static void def_geo_attribute_combine_xyz(StructRNA *srna)
static void rna_def_nodetree(BlenderRNA *brna)
static void def_geo_attribute_clamp(StructRNA *srna)
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_float_compare(StructRNA *srna)
static const EnumPropertyItem rna_node_geometry_attribute_input_type_items_float_vector[]
static void def_sh_uvalongstroke(StructRNA *srna)
static const EnumPropertyItem prop_shader_output_target_items[]
static void def_geo_collection_info(StructRNA *srna)
static const EnumPropertyItem node_flip_items[]
static void def_cmp_bilateral_blur(StructRNA *srna)
static const EnumPropertyItem node_hair_items[]
static void def_sh_tex_white_noise(StructRNA *srna)
static void def_cmp_zcombine(StructRNA *srna)
static void rna_def_compositor_node(BlenderRNA *brna)
static void def_geo_points_to_volume(StructRNA *srna)
static void def_cmp_switch_view(StructRNA *UNUSED(srna))
static void def_cmp_boxmask(StructRNA *srna)
static void def_cmp_ycc(StructRNA *srna)
static void def_time(StructRNA *srna)
static void def_sh_tex_gradient(StructRNA *srna)
static void def_cmp_brightcontrast(StructRNA *srna)
static void def_geo_attribute_sample_texture(StructRNA *srna)
static void def_anisotropic(StructRNA *srna)
static void dev_cmd_transform(StructRNA *srna)
static void def_sh_normal_map(StructRNA *srna)
static void def_cmp_id_mask(StructRNA *srna)
static const EnumPropertyItem node_principled_hair_items[]
static void def_cmp_denoise(StructRNA *srna)
static void def_geo_point_rotate(StructRNA *srna)
static void def_cmp_viewer(StructRNA *srna)
static void def_sh_tex(StructRNA *srna)
static void def_vector_math(StructRNA *srna)
static void rna_def_nodetree_link_api(BlenderRNA *brna, PropertyRNA *cprop)
static const EnumPropertyItem rna_node_geometry_attribute_input_type_items_vector[]
static void def_sh_vertex_color(StructRNA *srna)
static void def_geo_point_translate(StructRNA *srna)
static void rna_def_node(BlenderRNA *brna)
static void def_cmp_map_uv(StructRNA *srna)
static const EnumPropertyItem rna_enum_node_tex_dimensions_items[]
static void def_group_input(StructRNA *srna)
static void def_sh_tex_magic(StructRNA *srna)
static void def_geo_triangulate(StructRNA *srna)
static const EnumPropertyItem node_masktype_items[]
static void def_geo_mesh_line(StructRNA *srna)
static void rna_def_cmp_output_file_slot_layer(BlenderRNA *brna)
static void def_cmp_premul_key(StructRNA *srna)
static void def_sh_bump(StructRNA *srna)
static void def_sh_uvmap(StructRNA *srna)
static void def_sh_output(StructRNA *srna)
static void def_math(StructRNA *srna)
static void def_sh_tangent(StructRNA *srna)
static void def_mix_rgb(StructRNA *srna)
static void rna_def_node_socket_color(BlenderRNA *brna, const char *identifier, const char *interface_idname)
static void def_sh_vector_displacement(StructRNA *srna)
static void def_cmp_set_alpha(StructRNA *srna)
static void def_fn_input_vector(StructRNA *srna)
static const EnumPropertyItem rna_enum_node_socket_display_shape_items[]
static void def_geo_attribute_map_range(StructRNA *srna)
static void def_sh_tex_wireframe(StructRNA *srna)
static void rna_def_node_socket_geometry(BlenderRNA *brna, const char *identifier, const char *interface_idname)
static void rna_def_internal_node(BlenderRNA *brna)
static void def_cmp_colorcorrection(StructRNA *srna)
static const EnumPropertyItem node_quality_items[]
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 rna_enum_vector_rotate_type_items[]
static void rna_def_node_tree_sockets_api(BlenderRNA *brna, PropertyRNA *cprop, int in_out)
static void def_cmp_blur(StructRNA *srna)
static void def_cmp_composite(StructRNA *srna)
static void def_geo_attribute_attribute_compare(StructRNA *srna)
static void def_sh_tex_voronoi(StructRNA *srna)
static void def_fn_input_string(StructRNA *srna)
static const EnumPropertyItem node_cryptomatte_layer_name_items[]
static const EnumPropertyItem node_ycc_items[]
static void def_cmp_lensdist(StructRNA *srna)
static void def_cmp_color_matte(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 EnumPropertyItem rna_node_geometry_mesh_circle_fill_type_items[]
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 void def_sh_ambient_occlusion(StructRNA *srna)
static void rna_def_node_socket_string(BlenderRNA *brna, const char *identifier, const char *interface_idname)
static const EnumPropertyItem rna_node_geometry_attribute_randomize_operation_items[]
static void rna_def_node_socket_standard_types(BlenderRNA *brna)
static void def_group_output(StructRNA *srna)
static void rna_def_node_socket_interface(BlenderRNA *brna)
static void def_cmp_render_layers(StructRNA *srna)
static void def_geo_attribute_separate_xyz(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_geo_mesh_cone(StructRNA *srna)
static void def_geo_point_distribute(StructRNA *srna)
static void def_clamp(StructRNA *srna)
static void def_sh_tex_ies(StructRNA *srna)
static void def_sh_tex_musgrave(StructRNA *srna)
static void def_cmp_image(StructRNA *srna)
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 rna_def_node_socket_image(BlenderRNA *brna, const char *identifier, const char *interface_idname)
static void rna_def_node_socket_int(BlenderRNA *brna, const char *identifier, const char *interface_idname, PropertySubType subtype)
static void rna_def_node_socket_vector(BlenderRNA *brna, const char *identifier, const char *interface_idname, PropertySubType subtype)
static void def_sh_output_aov(StructRNA *srna)
void RNA_def_nodetree(BlenderRNA *brna)
static void def_sh_output_linestyle(StructRNA *srna)
static void rna_def_node_socket(BlenderRNA *brna)
static void rna_def_node_socket_object(BlenderRNA *brna, const char *identifier, const char *interface_idname)
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 def_boolean_math(StructRNA *srna)
static void def_cmp_huecorrect(StructRNA *srna)
static void def_cmp_channel_matte(StructRNA *srna)
const EnumPropertyItem rna_enum_node_vec_math_items[]
static void def_sh_displacement(StructRNA *srna)
static void def_geo_volume_to_mesh(StructRNA *srna)
static void def_cmp_glare(StructRNA *srna)
static void def_sh_tex_sky(StructRNA *srna)
static void def_geo_attribute_math(StructRNA *srna)
static void def_cmp_splitviewer(StructRNA *srna)
static void def_geo_attribute_vector_math(StructRNA *srna)
static void def_cmp_crop(StructRNA *srna)
static void def_map_range(StructRNA *srna)
static void def_hair(StructRNA *srna)
static void rna_def_geometry_nodetree(BlenderRNA *brna)
static void def_sh_script(StructRNA *srna)
static void rna_def_node_socket_bool(BlenderRNA *brna, const char *identifier, const char *interface_idname)
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_anisotropic_items[]
static void def_geo_attribute_convert(StructRNA *srna)
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 prop_tri_channel_items[]
static void def_sh_bevel(StructRNA *srna)
static void def_geo_mesh_circle(StructRNA *srna)
static void def_sh_mapping(StructRNA *srna)
static const EnumPropertyItem node_glass_items[]
static void rna_def_node_socket_shader(BlenderRNA *brna, const char *identifier, const char *interface_idname)
static void def_cmp_bokehimage(StructRNA *srna)
static void def_geo_attribute_proximity(StructRNA *srna)
static void def_cmp_moviedistortion(StructRNA *srna)
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 def_cmp_movieclip(StructRNA *srna)
static void def_hair_principled(StructRNA *srna)
static void def_cmp_despeckle(StructRNA *srna)
const EnumPropertyItem rna_enum_node_map_range_items[]
const EnumPropertyItem rna_enum_node_float_compare_items[]
static void def_sh_vect_transform(StructRNA *srna)
const EnumPropertyItem rna_enum_node_filter_items[]
static void rna_def_node_sockets_api(BlenderRNA *brna, PropertyRNA *cprop, int in_out)
static StructRNA * define_specific_node(BlenderRNA *brna, const char *struct_name, const char *base_name, const char *ui_name, const char *ui_desc, void(*def_func)(StructRNA *))
static void def_cmp_ellipsemask(StructRNA *srna)
static const EnumPropertyItem rna_node_geometry_attribute_input_type_items_no_boolean[]
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_geo_mesh_cylinder(StructRNA *srna)
static void rna_def_node_socket_collection(BlenderRNA *brna, const char *identifier, const char *interface_idname)
static void def_cmp_diff_matte(StructRNA *srna)
static void def_cmp_keyingscreen(StructRNA *srna)
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 rna_def_geometry_node(BlenderRNA *brna)
static void def_tex_image(StructRNA *srna)
const EnumPropertyItem rna_enum_node_clamp_items[]
static void def_geo_object_info(StructRNA *srna)
static void def_geo_attribute_color_ramp(StructRNA *srna)
static void def_geo_point_instance(StructRNA *srna)
static void def_vector_curve(StructRNA *srna)
static void def_cmp_chroma_matte(StructRNA *srna)
static void def_cmp_color_spill(StructRNA *srna)
static void def_cmp_cryptomatte_entry(BlenderRNA *brna)
static const EnumPropertyItem node_chunksize_items[]
static void def_sh_tex_wave(StructRNA *srna)
static void def_cmp_output_file(BlenderRNA *brna, StructRNA *srna)
static void def_sh_tex_pointdensity(StructRNA *srna)
static const EnumPropertyItem node_socket_type_items[]
static void def_sh_tex_coord(StructRNA *srna)
static const EnumPropertyItem node_principled_distribution_items[]
static void def_sh_tex_brick(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_node_socket_float(BlenderRNA *brna, const char *idname, const char *interface_idname, PropertySubType subtype)
static void def_cmp_translate(StructRNA *srna)
static void def_sh_tex_environment(StructRNA *srna)
static const EnumPropertyItem space_items[]
const EnumPropertyItem DummyRNA_NULL_items[]
const EnumPropertyItem rna_enum_proportional_falloff_curve_only_items[]
const EnumPropertyItem rna_enum_icon_items[]
char vertex_attribute_name[64]
char vertex_attribute_name[64]
struct ImageFormatData im_format
void(* update_script_node)(struct RenderEngine *engine, struct bNodeTree *ntree, struct bNode *node)
struct RenderLayer * next
struct bNodeTree * nodetree
Compact definition of a node socket.
void(* interface_init_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock, const char *data_path)
void(* draw_color)(struct bContext *C, struct PointerRNA *ptr, struct PointerRNA *node_ptr, float *r_color)
ExtensionRNA ext_interface
void(* interface_register_properties)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct StructRNA *data_srna)
void(* interface_draw_color)(struct bContext *C, struct PointerRNA *ptr, float *r_color)
void(* draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr, const char *text)
void(* free_self)(struct bNodeSocketType *stype)
void(* interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr)
void(* interface_from_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock)
struct bNodeSocket * next
struct bNodeSocketType * typeinfo
bool(* poll)(const struct bContext *C, struct bNodeTreeType *ntreetype)
void(* update)(struct bNodeTree *ntree)
void(* get_from_context)(const struct bContext *C, struct bNodeTreeType *ntreetype, struct bNodeTree **r_ntree, struct ID **r_id, struct ID **r_from)
struct bNodeTreeType * typeinfo
void(* group_update_func)(struct bNodeTree *ntree, struct bNode *node)
bool(* poll)(struct bNodeType *ntype, struct bNodeTree *nodetree, const char **r_disabled_hint)
void(* updatefunc)(struct bNodeTree *ntree, struct bNode *node)
bNodeSocketTemplate * outputs
void(* initfunc_api)(const struct bContext *C, struct PointerRNA *ptr)
void(* free_self)(struct bNodeType *ntype)
void(* insert_link)(struct bNodeTree *ntree, struct bNode *node, struct bNodeLink *link)
void(* draw_buttons_ex)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
void(* freefunc_api)(struct PointerRNA *ptr)
void(* labelfunc)(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen)
bNodeSocketTemplate * inputs
bool(* poll_instance)(struct bNode *node, struct bNodeTree *nodetree, const char **r_disabled_hint)
void(* copyfunc_api)(struct PointerRNA *ptr, const struct bNode *src_node)
struct bNodeType * typeinfo
void RE_point_density_sample(Depsgraph *depsgraph, PointDensity *pd, const int resolution, float *values)
void RE_point_density_minmax(struct Depsgraph *depsgraph, struct PointDensity *pd, float r_min[3], float r_max[3])
void RE_point_density_cache(struct Depsgraph *depsgraph, PointDensity *pd)
void RE_point_density_free(struct PointDensity *pd)
void WM_main_add_notifier(unsigned int type, void *reference)