9#define DNA_DEPRECATED_ALLOW
11#include <fmt/format.h>
70 if (
data->legacy_noise) {
86 if (curves.custom_knots !=
nullptr) {
91 &curves.curve_data_legacy,
CD_PROP_INT8,
"knots_mode", curves.curve_num));
92 if (knot_modes ==
nullptr) {
96 for (
const int curve : curves.curves_range()) {
97 int8_t &knot_mode = knot_modes[curve];
102 curves.nurbs_custom_knots_update_size();
146 *node,
SOCK_IN,
"Maximum Highlights");
178 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
180 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
185 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
191 MEM_freeN(fcurve->rna_path);
192 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
230 "Catadioptric Size");
249 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
251 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
256 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
262 char *old_rna_path = fcurve->
rna_path;
264 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
267 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
270 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
273 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
276 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
281 MEM_freeN(old_rna_path);
307 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
309 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
314 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
320 char *old_rna_path = fcurve->
rna_path;
322 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
325 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
330 MEM_freeN(old_rna_path);
389 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
391 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
396 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
402 char *old_rna_path = fcurve->
rna_path;
404 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
407 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
410 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
413 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
416 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
419 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
424 MEM_freeN(old_rna_path);
443 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
445 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
450 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
456 char *old_rna_path = fcurve->
rna_path;
458 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
462 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
465 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
470 MEM_freeN(old_rna_path);
489 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
491 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
496 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
502 char *old_rna_path = fcurve->
rna_path;
504 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
505 adjust_fcurve_key_frame_values(
506 fcurve, PROP_FLOAT, [&](const float value) { return value / 100.0f; });
510 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
513 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
517 if (fcurve->rna_path != old_rna_path) {
545 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
547 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
552 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
558 char *old_rna_path = fcurve->
rna_path;
560 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
563 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
568 MEM_freeN(old_rna_path);
594 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
596 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
601 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
607 char *old_rna_path = fcurve->
rna_path;
609 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
612 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
617 MEM_freeN(old_rna_path);
677 "Chromatic Adaptation",
678 "Chromatic Adaptation");
687 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
689 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
694 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
700 char *old_rna_path = fcurve->
rna_path;
702 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
705 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
708 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
711 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
714 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
717 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
720 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
725 MEM_freeN(old_rna_path);
750 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
752 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
757 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
763 char *old_rna_path = fcurve->
rna_path;
765 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
768 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
773 MEM_freeN(old_rna_path);
792 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
794 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
799 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
805 char *old_rna_path = fcurve->
rna_path;
807 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
812 MEM_freeN(old_rna_path);
831 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
833 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
838 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
844 char *old_rna_path = fcurve->
rna_path;
846 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
851 MEM_freeN(old_rna_path);
893 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
895 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
900 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
906 char *old_rna_path = fcurve->
rna_path;
908 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
911 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
914 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
917 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
922 MEM_freeN(old_rna_path);
942 "Neighbor Threshold",
943 "Neighbor Threshold");
953 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
955 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
960 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
966 char *old_rna_path = fcurve->
rna_path;
968 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
971 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
976 MEM_freeN(old_rna_path);
1000 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1002 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1007 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1013 char *old_rna_path = fcurve->
rna_path;
1015 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1020 MEM_freeN(old_rna_path);
1061 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1063 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1068 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1074 char *old_rna_path = fcurve->
rna_path;
1076 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1079 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1081 adjust_fcurve_key_frame_values(
1082 fcurve, PROP_FLOAT, [&](const float value) { return value * 10.0f; });
1085 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1089 if (fcurve->rna_path != old_rna_path) {
1125 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1127 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1132 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1138 char *old_rna_path = fcurve->
rna_path;
1140 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1143 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1145 adjust_fcurve_key_frame_values(
1146 fcurve, PROP_FLOAT, [&](const float value) { return value * 2.0f; });
1150 if (fcurve->rna_path != old_rna_path) {
1182 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1184 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1189 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1195 char *old_rna_path = fcurve->
rna_path;
1197 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1200 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1205 MEM_freeN(old_rna_path);
1245 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1247 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1252 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1258 char *old_rna_path = fcurve->
rna_path;
1260 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1263 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1266 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1271 MEM_freeN(old_rna_path);
1311 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1313 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1318 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1324 char *old_rna_path = fcurve->
rna_path;
1326 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1329 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1332 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1337 MEM_freeN(old_rna_path);
1371 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1373 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1378 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1384 char *old_rna_path = fcurve->
rna_path;
1386 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1389 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1394 MEM_freeN(old_rna_path);
1425 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1427 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1432 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1438 char *old_rna_path = fcurve->
rna_path;
1440 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1443 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1448 MEM_freeN(old_rna_path);
1482 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1484 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1489 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1495 char *old_rna_path = fcurve->
rna_path;
1497 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1500 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1505 MEM_freeN(old_rna_path);
1530 "Use Spill Strength",
1531 "Use Spill Strength");
1549 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1551 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1556 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1562 char *old_rna_path = fcurve->
rna_path;
1564 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1567 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1570 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1571 fcurve->array_index = 0;
1574 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1575 fcurve->array_index = 1;
1578 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1579 fcurve->array_index = 2;
1584 MEM_freeN(old_rna_path);
1609 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1611 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1616 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1622 char *old_rna_path = fcurve->
rna_path;
1624 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
1629 MEM_freeN(old_rna_path);
1648 "Preprocess Blur Size",
1649 "Preprocess Blur Size");
1689 "Postprocess Blur Size",
1690 "Postprocess Blur Size");
1700 "Postprocess Dilate Size",
1701 "Postprocess Dilate Size");
1711 "Postprocess Feather Size",
1712 "Postprocess Feather Size");
1723 "Despill Strength");
1738 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1740 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1745 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1751 char *old_rna_path = fcurve->
rna_path;
1753 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1756 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1759 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1762 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
1765 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
1768 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
1771 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[10].default_value");
1774 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
1777 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[12].default_value");
1780 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
1783 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
1788 MEM_freeN(old_rna_path);
1813 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1815 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1820 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1826 char *old_rna_path = fcurve->
rna_path;
1828 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1831 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1836 MEM_freeN(old_rna_path);
1856 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1858 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1863 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1869 char *old_rna_path = fcurve->
rna_path;
1871 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1876 MEM_freeN(old_rna_path);
1913 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1915 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1920 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1926 char *old_rna_path = fcurve->
rna_path;
1928 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1931 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1934 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1939 MEM_freeN(old_rna_path);
1958 "Master Saturation",
1959 "Master Saturation");
1993 "Shadows Saturation",
1994 "Shadows Saturation");
2005 "Shadows Contrast");
2033 "Midtones Saturation",
2034 "Midtones Saturation");
2044 "Midtones Contrast",
2045 "Midtones Contrast");
2073 "Highlights Saturation",
2074 "Highlights Saturation");
2084 "Highlights Contrast",
2085 "Highlights Contrast");
2096 "Highlights Gamma");
2151 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2153 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2158 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2164 char *old_rna_path = fcurve->
rna_path;
2166 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2169 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2172 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2175 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2178 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
2181 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
2184 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
2187 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[8].default_value");
2190 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[9].default_value");
2193 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[10].default_value");
2196 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
2199 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[12].default_value");
2202 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
2205 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
2208 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[15].default_value");
2211 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[16].default_value");
2214 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[17].default_value");
2217 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[18].default_value");
2220 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[19].default_value");
2223 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[20].default_value");
2226 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[21].default_value");
2229 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[22].default_value");
2232 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[23].default_value");
2235 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[24].default_value");
2238 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[25].default_value");
2241 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[26].default_value");
2246 MEM_freeN(old_rna_path);
2281 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2283 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2288 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2294 char *old_rna_path = fcurve->
rna_path;
2296 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2299 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2302 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"distortion_type");
2307 MEM_freeN(old_rna_path);
2348 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2350 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2355 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2361 char *old_rna_path = fcurve->
rna_path;
2363 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2364 fcurve->array_index = 0;
2367 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2368 fcurve->array_index = 1;
2371 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2372 fcurve->array_index = 0;
2375 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2376 fcurve->array_index = 1;
2379 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2384 MEM_freeN(old_rna_path);
2426 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2428 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2433 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2439 char *old_rna_path = fcurve->
rna_path;
2441 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2442 fcurve->array_index = 0;
2445 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2446 fcurve->array_index = 1;
2449 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2450 fcurve->array_index = 0;
2453 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2454 fcurve->array_index = 1;
2457 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2462 MEM_freeN(old_rna_path);
2497 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2499 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2504 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2510 char *old_rna_path = fcurve->
rna_path;
2512 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2515 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2520 MEM_freeN(old_rna_path);
2580 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2582 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2587 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2593 char *old_rna_path = fcurve->
rna_path;
2595 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2598 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2599 fcurve->array_index = 0;
2602 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2603 fcurve->array_index = 1;
2606 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2609 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2611 adjust_fcurve_key_frame_values(
2612 fcurve, PROP_FLOAT, [&](const float value) { return value + 1.0f; });
2615 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
2618 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
2622 if (fcurve->rna_path != old_rna_path) {
2640 storage->sigma_space);
2659 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2661 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2666 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2672 char *old_rna_path = fcurve->
rna_path;
2674 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2677 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2682 MEM_freeN(old_rna_path);
2704 node_to_image_link_map.
add_new(link->tonode->name, link);
2707 node_to_alpha_link_map.
add_new(link->tonode->name, link);
2721 if (!node_to_image_link_map.
contains(node->name)) {
2732 set_alpha_node->
location[0] = node->location[0] - node->width - 20.0f;
2733 set_alpha_node->
location[1] = node->location[1];
2736 *set_alpha_node,
SOCK_IN,
"Image");
2738 *set_alpha_node,
SOCK_IN,
"Type");
2740 *set_alpha_node,
SOCK_OUT,
"Image");
2758 if (!node_to_alpha_link_map.
contains(node->name)) {
2768 set_alpha_node->
location[0] = node->location[0] - node->width - 20.0f;
2769 set_alpha_node->
location[1] = node->location[1];
2772 *set_alpha_node,
SOCK_IN,
"Image");
2774 *set_alpha_node,
SOCK_IN,
"Alpha");
2777 *set_alpha_node,
SOCK_OUT,
"Image");
2790 if (!node_to_image_link_map.
contains(node->name)) {
2815 if (!
bool(link->tonode->custom1)) {
2826 convert_alpha_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
2827 convert_alpha_node->
location[1] = link->tonode->location[1];
2830 *convert_alpha_node,
SOCK_IN,
"Image");
2832 *convert_alpha_node,
SOCK_IN,
"Type");
2834 *convert_alpha_node,
SOCK_OUT,
"Image");
2840 *node_tree, *link->fromnode, *link->fromsock, *convert_alpha_node, *convert_alpha_input);
2842 *node_tree, *convert_alpha_node, *convert_alpha_output, *link->tonode, *link->tosock);
2852 if (!
bool(link->fromnode->custom1)) {
2859 convert_alpha_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
2860 convert_alpha_node->
location[1] = link->fromnode->location[1];
2863 *convert_alpha_node,
SOCK_IN,
"Image");
2865 *convert_alpha_node,
SOCK_IN,
"Type");
2867 *convert_alpha_node,
SOCK_OUT,
"Image");
2873 *node_tree, *link->fromnode, *link->fromsock, *convert_alpha_node, *convert_alpha_input);
2875 *node_tree, *convert_alpha_node, *convert_alpha_output, *link->tonode, *link->tosock);
2890 const float mix_factor =
static_cast<NodeTwoFloats *
>(link->tonode->storage)->
x;
2891 if (mix_factor == 0.0f) {
2900 link->tonode->custom1 =
false;
2904 mix_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
2905 mix_node->
location[1] = link->tonode->location[1];
2911 *mix_node,
SOCK_IN,
"Factor_Float");
2918 to_straight_node->parent = link->tonode->parent;
2919 to_straight_node->location[0] = mix_node->
location[0] - mix_node->
width - 20.0f;
2920 to_straight_node->location[1] = mix_node->
location[1];
2923 *to_straight_node,
SOCK_IN,
"Image");
2925 *to_straight_node,
SOCK_IN,
"Type");
2927 *to_straight_node,
SOCK_OUT,
"Image");
2934 to_premultiplied_node->parent = link->tonode->parent;
2935 to_premultiplied_node->location[0] = to_straight_node->location[0] - to_straight_node->width -
2937 to_premultiplied_node->location[1] = to_straight_node->location[1];
2940 *to_premultiplied_node,
SOCK_IN,
"Image");
2942 *to_premultiplied_node,
SOCK_IN,
"Type");
2944 *to_premultiplied_node,
SOCK_OUT,
"Image");
2952 *to_premultiplied_node,
2953 *to_premultiplied_input);
2955 *to_premultiplied_node,
2956 *to_premultiplied_output,
2958 *to_straight_input);
2960 *node_tree, *to_premultiplied_node, *to_premultiplied_output, *mix_node, *mix_b_input);
2962 *node_tree, *to_straight_node, *to_straight_output, *mix_node, *mix_a_input);
2972 node->storage =
nullptr;
2992 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2994 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2999 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3005 char *old_rna_path = fcurve->
rna_path;
3007 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3012 MEM_freeN(old_rna_path);
3032 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3034 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3039 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3045 char *old_rna_path = fcurve->
rna_path;
3047 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3052 MEM_freeN(old_rna_path);
3070 const float x = link->fromnode->custom3;
3071 const float y = link->fromnode->custom4;
3072 if (
x == 0.0f &&
y == 0.0f) {
3079 translate_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3080 translate_node->
location[1] = link->fromnode->location[1];
3082 static_cast<NodeScaleData *
>(link->fromnode->storage)->interpolation;
3086 *translate_node,
SOCK_IN,
"Image");
3090 *translate_node,
SOCK_OUT,
"Image");
3096 *node_tree, *link->fromnode, *link->fromsock, *translate_node, *translate_image_input);
3098 *node_tree, *translate_node, *translate_image_output, *link->tonode, *link->tosock);
3111 int bytes_processed = 0;
3112 while (bytes_processed < string_array_length &&
string[bytes_processed] !=
'\0') {
3113 if (
string[bytes_processed] ==
'{') {
3115 string, string_array_length, bytes_processed, bytes_processed + 1,
"{{");
3116 bytes_processed += 2;
3119 if (
string[bytes_processed] ==
'}') {
3121 string, string_array_length, bytes_processed, bytes_processed + 1,
"}}");
3122 bytes_processed += 2;
3139 !
bool(
static_cast<NodeBlurData *
>(link->tonode->storage)->gamma))
3145 !
bool(
static_cast<NodeDefocus *
>(link->tonode->storage)->gamco))
3156 gamma_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
3157 gamma_node->
location[1] = link->tonode->location[1];
3177 !
bool(
static_cast<NodeBlurData *
>(link->fromnode->storage)->gamma))
3183 !
bool(
static_cast<NodeDefocus *
>(link->fromnode->storage)->gamco))
3190 gamma_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3191 gamma_node->
location[1] = link->fromnode->location[1];
3219 if (!
STREQ(node->idname,
"CompositorNodeOutputFile")) {
3239 if (!
STREQ(node->idname,
"CompositorNodeTranslate")) {
3248 if (!
bool(
data->relative)) {
3257 if (link->tonode != node) {
3282 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3284 x_relative_to_pixel_node->
location[0] = node->location[0] - node->width - 20.0f;
3285 x_relative_to_pixel_node->
location[1] = node->location[1];
3291 *x_relative_to_pixel_node,
SOCK_IN,
"Image");
3293 *x_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3295 *x_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3305 *x_relative_to_pixel_node,
3312 *x_relative_to_pixel_node,
3320 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3322 y_relative_to_pixel_node->
location[0] = node->location[0] - node->width - 20.0f;
3323 y_relative_to_pixel_node->
location[1] = node->location[1] - 20.0f;
3329 *y_relative_to_pixel_node,
SOCK_IN,
"Image");
3331 *y_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3333 *y_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3343 *y_relative_to_pixel_node,
3350 *y_relative_to_pixel_node,
3399 if (link->tonode != node) {
3409 if (!
bool(node->
custom2) || !image_link) {
3416 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3425 *x_relative_to_pixel_node,
SOCK_IN,
"Image");
3427 *x_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3429 *x_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3438 *x_relative_to_pixel_node,
3442 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3451 *y_relative_to_pixel_node,
SOCK_IN,
"Image");
3453 *y_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3455 *y_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3464 *y_relative_to_pixel_node,
3468 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3477 *width_relative_to_pixel_node,
SOCK_IN,
"Image");
3479 *width_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3481 *width_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3488 *node_tree, *width_relative_to_pixel_node, *width_value_output, *node, *width_input);
3492 *width_relative_to_pixel_node,
3493 *width_image_input);
3496 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3505 *height_relative_to_pixel_node,
SOCK_IN,
"Image");
3507 *height_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3509 *height_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3516 *node_tree, *height_relative_to_pixel_node, *height_value_output, *node, *height_input);
3520 *height_relative_to_pixel_node,
3521 *height_image_input);
3531 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3533 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3538 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3544 char *old_rna_path = fcurve->
rna_path;
3546 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
3549 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3552 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3555 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3558 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
3559 adjust_fcurve_key_frame_values(
3560 fcurve, PROP_BOOLEAN, [&](const float value) { return 1.0f - value; });
3564 if (fcurve->rna_path != old_rna_path) {
3626 "Input Temperature",
3643 "Output Temperature",
3663 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3665 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3670 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3676 char *old_rna_path = fcurve->
rna_path;
3678 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3681 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
3684 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
3687 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[8].default_value");
3690 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[9].default_value");
3693 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
3696 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
3699 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
3702 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[15].default_value");
3705 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[16].default_value");
3708 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[17].default_value");
3713 MEM_freeN(old_rna_path);
3723 if (!
STREQ(node->idname,
"CompositorNodeImageInfo")) {
3728 bNodeLink *output_texture_link =
nullptr;
3731 if (link->tonode == node) {
3735 if (link->fromnode == node &&
3738 output_texture_link = link;
3741 if (link->fromnode == node &&
3744 output_pixel_link = link;
3748 if (!output_texture_link && !output_pixel_link) {
3753 nullptr, *node_tree,
"CompositorNodeImageCoordinates");
3755 image_coordinates_node->
location[0] = node->location[0];
3756 image_coordinates_node->
location[1] = node->location[1] - node->height - 10.0f;
3760 *image_coordinates_node,
SOCK_IN,
"Image");
3764 *image_coordinates_node,
3768 if (output_texture_link) {
3770 *image_coordinates_node,
SOCK_OUT,
"Uniform");
3772 *image_coordinates_node,
3774 *output_texture_link->
tonode,
3775 *output_texture_link->
tosock);
3779 if (output_pixel_link) {
3781 *image_coordinates_node,
SOCK_OUT,
"Pixel");
3783 *image_coordinates_node,
3785 *output_pixel_link->
tonode,
3786 *output_pixel_link->
tosock);
3862 if (link->tonode != node) {
3877 nullptr, *node_tree,
"ShaderNodeVectorMath");
3887 *multiply_node,
SOCK_OUT,
"Vector");
3889 if (storage->relative) {
3901 *node_tree, *size_link->
fromnode, *size_link->
fromsock, *multiply_node, *scale_input);
3903 *node_tree, *multiply_node, *vector_output, *node, *size_input);
3905 size_link = &new_link;
3909 if (!
bool(storage->relative) || !image_link) {
3914 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3920 switch (storage->aspect) {
3928 relative_to_pixel_node->
custom2 =
3937 *relative_to_pixel_node,
SOCK_IN,
"Image");
3939 *relative_to_pixel_node,
SOCK_IN,
"Vector Value");
3941 *relative_to_pixel_node,
SOCK_OUT,
"Vector Value");
3946 *relative_to_pixel_node,
3952 *relative_to_pixel_node,
3971 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3973 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3978 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3984 char *old_rna_path = fcurve->
rna_path;
3986 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
3987 fcurve->array_index = 0;
3990 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
3991 fcurve->array_index = 1;
3994 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3997 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3998 adjust_fcurve_key_frame_values(
3999 fcurve, PROP_BOOLEAN, [&](const float value) { return 1.0f - value; });
4003 if (fcurve->rna_path != old_rna_path) {
4012 if (ts->unified_paint_settings.curve_rand_hue ==
nullptr) {
4015 if (ts->unified_paint_settings.curve_rand_saturation ==
nullptr) {
4018 if (ts->unified_paint_settings.curve_rand_value ==
nullptr) {
4070 links_to_level_and_max_inputs.
add(link->tosock, link);
4087 *origin_node,
SOCK_IN,
"Max");
4089 !links_to_level_and_max_inputs.
contains(max_input_socket))
4100 clamp_node.
location[0] = node->location[0] - 25;
4101 clamp_node.
location[1] = node->location[1];
4103 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Value");
4105 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Min");
4107 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Max");
4109 tree, clamp_node,
SOCK_OUT,
"NodeSocketFloat",
"Result");
4114 link->
tosock = &clamp_value_input;
4120 value->
value = std::clamp(value->
value, 0, 11);
4158 for (ID *slot_user : slot_users) {
4159 PointerRNA slot_user_ptr = RNA_id_pointer_create(slot_user);
4162 if (!RNA_path_resolve_property(&slot_user_ptr, fcurve.rna_path, &ptr, &prop)) {
4166 blender::animrig::update_autoflags_fcurve_direct(&fcurve, RNA_property_type(prop));
4703 ToolSettings toolsettings_default = blender::dna::shallow_copy(
4707 scene->toolsettings->snap_step_frames = toolsettings_default.
snap_step_frames;
4708 scene->toolsettings->snap_step_seconds = toolsettings_default.
snap_step_seconds;
4745 if (brush->gpencil_settings) {
4764 if (
STREQ(node->idname,
"GeometryNodeCurveToMesh")) {
4765 curve_to_mesh_nodes.
add(node);
4769 for (
bNode *curve_to_mesh : curve_to_mesh_nodes) {
4790 named_attribute.storage = named_attribute_storage;
4791 named_attribute.parent = curve_to_mesh->parent;
4792 named_attribute.location[0] = curve_to_mesh->location[0] - 25;
4793 named_attribute.location[1] = curve_to_mesh->location[1];
4808 switch_node.
storage = switch_storage;
4810 switch_node.
location[0] = curve_to_mesh->location[0] - 25;
4811 switch_node.
location[1] = curve_to_mesh->location[1];
4861 if (scene->ed !=
nullptr) {
4906 if (sima->
flag & SI_NO_DRAW_TEXPAINT) {
4923 const char *workspace_name = screen->id.name + 2;
4927 if (
STREQ(workspace_name,
"UV Editing")) {
4939 if (
ELEM(brush->sculpt_brush_type,
4940 SCULPT_BRUSH_TYPE_FLATTEN,
4941 SCULPT_BRUSH_TYPE_FILL,
4942 SCULPT_BRUSH_TYPE_SCRAPE))
4944 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_FLATTEN) {
4945 brush->plane_height = 1.0f;
4946 brush->plane_depth = 1.0f;
4947 brush->area_radius_factor = 1.0f;
4951 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_FILL) {
4952 brush->plane_height = 0.0f;
4953 brush->plane_depth = 1.0f;
4959 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_SCRAPE) {
4960 brush->plane_height = 1.0f;
4961 brush->plane_depth = 0.0f;
4978 brush->plane_offset *= -1.0f;
4982 brush->plane_height *= brush->plane_trim;
4983 brush->plane_depth *= brush->plane_trim;
4998 if (item.
item_type == eNodeTreeInterfaceItemType::NODE_INTERFACE_SOCKET) {
5019 &arm->bonebase, [](
Bone *bone) { bone->drawtype = ARM_DRAW_TYPE_ARMATURE_DEFINED; });
5020 BLI_assert_msg(!arm->edbo,
"Armatures should not be saved in edit mode");
5058 if (
STREQ(node->idname,
"GeometryNodeStoreNamedGrid")) {
5059 switch (node->custom1) {
5102 if (node->storage !=
nullptr) {
5107 node->storage =
data;
5115 scene->grease_pencil_settings.smaa_threshold_render =
5116 scene->grease_pencil_settings.smaa_threshold;
5117 scene->grease_pencil_settings.aa_samples = 1;
5158 if (slot->name[0]) {
5164 scene->r.ppm_factor = 72.0f;
5165 scene->r.ppm_base = 0.0254f;
5499 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
5642 if (bone->parent && (bone->flag & BONE_CONNECTED)) {
5643 bone->rad_head = bone->parent->rad_tail;
5649 ebone->rad_head = ebone->parent->rad_tail;
5740 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
5773 if (scene->nodetree) {
5787 if (brush->tip_scale_x == 0.0f) {
5788 brush->tip_scale_x = 1.0f;
5842 if (nu->pntsv > 1) {
5848 cu->ob_type = ob_type;
5876 if (light->temperature == 0.0f) {
5877 light->temperature = 6500.0f;
5941 ob->soft->fuzzyness = std::max<int>(1, ob->soft->fuzzyness);
Functions and classes to work with Actions.
Functionality to iterate an Action in various ways.
void BKE_animdata_main_cb(struct Main *bmain, blender::FunctionRef< void(ID *, AnimData *)> func)
void BKE_fcurves_id_cb(struct ID *id, blender::FunctionRef< void(ID *, FCurve *)> func)
Low-level operations for curves.
CustomData interface, see also DNA_customdata_types.h.
void * CustomData_get_layer_named_for_write(CustomData *data, eCustomDataType type, blender::StringRef name, int totelem)
Low-level operations for grease pencil.
#define MAIN_VERSION_FILE_ATLEAST(main, ver, subver)
#define FOREACH_NODETREE_END
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
#define CMP_NODE_PREMULKEY
#define GEO_NODE_SUBDIVISION_SURFACE
#define CMP_NODE_COLOR_SPILL
#define CMP_NODE_DESPECKLE
#define CMP_NODE_LUMA_MATTE
#define CMP_NODE_CORNERPIN
#define CMP_NODE_KEYINGSCREEN
#define CMP_NODE_MASK_ELLIPSE
#define GEO_NODE_SUBDIVIDE_MESH
#define CMP_NODE_BILATERALBLUR
#define CMP_NODE_TRANSLATE
#define CMP_NODE_COLORBALANCE
#define CMP_NODE_BOKEHIMAGE
#define CMP_NODE_KUWAHARA
#define CMP_NODE_DIFF_MATTE
#define CMP_NODE_ALPHAOVER
#define CMP_NODE_CHROMA_MATTE
#define CMP_NODE_PLANETRACKDEFORM
#define CMP_NODE_DILATEERODE
#define CMP_NODE_BOKEHBLUR
#define CMP_NODE_LENSDIST
#define CMP_NODE_ZCOMBINE
#define CMP_NODE_SUNBEAMS_DEPRECATED
#define CMP_NODE_COLORCORRECTION
#define CMP_NODE_SETALPHA
#define CMP_NODE_STABILIZE2D
#define CMP_NODE_PIXELATE
#define CMP_NODE_COMPOSITE_DEPRECATED
#define CMP_NODE_MASK_BOX
#define CMP_NODE_ANTIALIASING
#define CMP_NODE_COLOR_MATTE
#define CMP_NODE_DIST_MATTE
#define CMP_NODE_BRIGHTCONTRAST
#define CMP_NODE_CHANNEL_MATTE
CurveMapping * BKE_paint_default_curve()
@ VOLUME_GRID_VECTOR_FLOAT
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_BACKWARD_MUTABLE(type, var, list)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
char * STRNCPY(char(&dst)[N], const char *src)
int bool bool BLI_str_endswith(const char *__restrict str, const char *__restrict end) ATTR_NONNULL(1
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
int BLI_str_utf8_invalid_strip(char *str, size_t str_len) ATTR_NONNULL(1)
size_t BLI_string_replace_range(char *string, size_t string_maxncpy, int src_beg, int src_end, const char *dst)
@ GP_BRUSH_USE_SAT_RAND_PRESS
@ GP_BRUSH_USE_VAL_RAND_PRESS
@ GP_BRUSH_USE_HUE_RAND_PRESS
@ GP_BRUSH_USE_HUE_AT_STROKE
@ GP_BRUSH_USE_VAL_AT_STROKE
@ GP_BRUSH_USE_SAT_AT_STROKE
@ BRUSH_PLANE_INVERT_DISPLACEMENT
@ BRUSH_PLANE_SWAP_HEIGHT_AND_DEPTH
@ SCULPT_BRUSH_TYPE_PLANE
@ BRUSH_INVERT_TO_SCRAPE_FILL
@ BRUSH_COLOR_JITTER_USE_VAL_AT_STROKE
@ BRUSH_COLOR_JITTER_USE_HUE_AT_STROKE
@ BRUSH_COLOR_JITTER_USE_SAT_AT_STROKE
@ BRUSH_COLOR_JITTER_USE_SAT_RAND_PRESS
@ BRUSH_COLOR_JITTER_USE_VAL_RAND_PRESS
@ BRUSH_COLOR_JITTER_USE_HUE_RAND_PRESS
#define DNA_struct_default_get(struct_name)
@ NODE_INTERFACE_SOCKET_SINGLE_VALUE_ONLY_LEGACY
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_SINGLE
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_AUTO
@ CMP_NODE_INTERPOLATION_BILINEAR
@ CMP_NODE_INTERPOLATION_ANISOTROPIC
@ CMP_NODE_OUTPUT_IGNORE_ALPHA
@ CMP_NODE_BLUR_ASPECT_NONE
@ CMP_NODE_RELATIVE_TO_PIXEL_DATA_TYPE_VECTOR
@ CMP_NODE_RELATIVE_TO_PIXEL_DATA_TYPE_FLOAT
@ CMP_NODE_ALPHA_CONVERT_UNPREMULTIPLY
@ CMP_NODE_ALPHA_CONVERT_PREMULTIPLY
@ CMP_NODE_MASK_FLAG_NO_FEATHER
@ CMP_NODE_MASK_FLAG_MOTION_BLUR
@ CMP_NODE_SETALPHA_MODE_REPLACE_ALPHA
@ CMP_NODE_SCALE_RENDER_SIZE
@ CMP_NODE_RELATIVE_TO_PIXEL_REFERENCE_DIMENSION_PER_DIMENSION
@ CMP_NODE_RELATIVE_TO_PIXEL_REFERENCE_DIMENSION_Y
@ CMP_NODE_RELATIVE_TO_PIXEL_REFERENCE_DIMENSION_X
@ CMP_NODE_LENS_DISTORTION_RADIAL
@ CMP_NODE_LENS_DISTORTION_HORIZONTAL
@ SEQ_SNAP_TO_FRAME_RANGE
@ STRIP_TYPE_OVERDROP_REMOVED
@ STRIP_BLEND_OVERDROP_REMOVED
@ FILE_ASSET_IMPORT_INSTANCE_COLLECTIONS_ON_LINK
@ V2D_ZOOM_IGNORE_KEEPOFS
BMesh const char void * data
bool add(const Key &key, const Value &value)
const Value & lookup(const Key &key) const
Value lookup_default(const Key &key, const Value &default_value) const
void add_new(const Key &key, const Value &value)
bool contains(const Key &key) const
constexpr bool is_empty() const
blender::Span< const Slot * > slots() const
bke::CurvesGeometry & strokes_for_write()
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void foreach_fcurve_in_action_slot(Action &action, slot_handle_t handle, FunctionRef< void(FCurve &fcurve)> callback)
static void ANIM_armature_foreach_bone(ListBase *bones, CB callback)
void foreach_fcurve_in_action(Action &action, FunctionRef< void(FCurve &fcurve)> callback)
T & get_item_as(bNodeTreeInterfaceItem &item)
T & get_socket_data_as(bNodeTreeInterfaceSocket &item)
void node_modify_socket_type_static(bNodeTree *ntree, bNode *node, bNodeSocket *sock, int type, int subtype)
bNodeSocket * node_find_socket(bNode &node, eNodeSocketInOut in_out, StringRef identifier)
bNode * node_add_node(const bContext *C, bNodeTree &ntree, StringRef idname, std::optional< int > unique_identifier=std::nullopt)
void node_remove_link(bNodeTree *ntree, bNodeLink &link)
bNodeSocketType * node_socket_type_find(StringRef idname)
bNode * node_add_static_node(const bContext *C, bNodeTree &ntree, int type)
bNodeSocket * node_add_static_socket(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, int type, int subtype, StringRefNull identifier, StringRefNull name)
void foreach_strip(ListBase *seqbase, ForEachFunc callback, void *user_data)
SequencerToolSettings * tool_settings_ensure(Scene *scene)
float wrap(float value, float max, float min)
struct BrushGpencilSettings * gpencil_settings
FileSelectParams base_params
unsigned short list_column_size
unsigned short list_thumbnail_size
float shadow_terminator_shading_offset
float shadow_terminator_geometry_offset
float shadow_terminator_normal_offset
FileSelectParams * params
FileAssetSelectParams * asset_params
bNodeTreeInterface tree_interface
static void do_version_alpha_over_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_color_spill_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_init_default_jitter_curves_in_unified_paint_settings(ToolSettings *ts)
static void do_version_tone_map_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_id_mask_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_color_correction_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_color_balance_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_denoise_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_directional_blur_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_translate_node_remove_relative(bNodeTree *node_tree)
static void do_version_tone_map_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_composite_viewer_remove_alpha(bNodeTree *node_tree)
static void do_version_glare_node_star_45_option_to_input_animation(bNodeTree *node_tree, bNode *node)
void blo_do_versions_450(FileData *, Library *, Main *bmain)
static void version_set_default_bone_drawtype(Main *bmain)
static void do_version_denoise_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_luminance_matte_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_bright_contrast_remove_premultiplied(bNodeTree *node_tree)
static void do_version_luminance_matte_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_alpha_over_remove_premultiply(bNodeTree *node_tree)
static void do_version_pixelate_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_stabilize_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_difference_matte_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_stabilize_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_chroma_matte_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static bool strip_effect_overdrop_to_alphaover(Strip *strip, void *)
static void do_version_distance_matte_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void version_escape_curly_braces(char string[], const int string_array_length)
static void do_version_blur_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_anti_alias_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void version_show_texpaint_to_show_uv(Main *bmain)
static void do_version_difference_matte_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_keying_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_despeckle_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_mask_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_bokeh_blur_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_chroma_matte_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_scale_node_remove_translate(bNodeTree *node_tree)
static void fix_curve_nurbs_knot_mode_custom(Main *bmain)
static void do_version_invert_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_kuwahara_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_dilate_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_z_combine_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_color_matte_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_sun_beams_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_replace_image_info_node_coordinates(bNodeTree *node_tree)
static void do_version_color_spill_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_bokeh_blur_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_sun_beams_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_z_combine_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_split_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_time_curve_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void version_convert_sculpt_planar_brushes(Main *bmain)
static void do_version_id_mask_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_channel_matte_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_bokeh_image_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void version_escape_curly_braces_in_compositor_file_output_nodes(bNodeTree &nodetree)
static void do_convert_gp_jitter_flags(Brush *brush)
static void do_version_plane_track_deform_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_lens_distortion_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void clamp_subdivision_node_level_input(bNodeTree &tree)
static void do_version_switch_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_lens_distortion_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_time_curve_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_box_mask_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_split_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void asset_browser_add_list_view(Main *bmain)
static void do_version_kuwahara_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_crop_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_ellipse_mask_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_color_matte_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_switch_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_plane_track_deform_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_despeckle_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_color_correction_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_ellipse_mask_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_box_mask_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_vector_blur_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_dilate_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_alpha_over_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_inpaint_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_vector_sockets_dimensions(bNodeTree *node_tree)
static void do_version_mask_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_bokeh_image_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_anti_alias_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void nlastrips_apply_fcurve_versioning(ListBase &strips)
void do_versions_after_linking_450(FileData *, Main *bmain)
static void do_version_bilateral_blur_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void version_sequencer_update_overdrop(Main *bmain)
static void do_version_blur_defocus_nodes_remove_gamma(bNodeTree *node_tree)
static void do_version_channel_matte_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_flip_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_keying_screen_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_keying_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_new_glare_clamp_input(bNodeTree *node_tree)
static void do_version_glare_node_star_45_option_to_input(bNodeTree *node_tree, bNode *node)
static void do_version_inpaint_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void node_interface_single_value_to_structure_type(bNodeTreeInterfaceItem &item)
static void do_version_bilateral_blur_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_node_curve_to_mesh_scale_input(bNodeTree *tree)
static void do_version_directional_blur_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_invert_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_color_balance_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void version_fix_fcurve_noise_offset(FCurve &fcurve)
static void do_version_vector_blur_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void version_set_uv_face_overlay_defaults(Main *bmain)
static void do_version_keying_screen_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_crop_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_pixelate_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
static void do_version_distance_matte_node_options_to_inputs_animation(bNodeTree *node_tree, bNode *node)
static void do_version_blur_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
IDProperty * version_cycles_properties_from_ID(ID *id)
void version_node_tree_clear_interface(bNodeTree &ntree)
bool version_node_socket_is_used(bNodeSocket *sock)
bNodeSocket & version_node_add_socket(bNodeTree &ntree, bNode &node, const eNodeSocketInOut in_out, const char *idname, const char *identifier)
void version_node_socket_index_animdata(Main *bmain, const int node_tree_type, const int node_type, const int socket_index_orig, const int socket_index_offset, const int total_number_of_sockets)
bNode & version_node_add_empty(bNodeTree &ntree, const char *idname)
void version_socket_update_is_used(bNodeTree *ntree)
bNodeLink & version_node_add_link(bNodeTree &ntree, bNode &node_a, bNodeSocket &socket_a, bNode &node_b, bNodeSocket &socket_b)
bNodeSocket * version_node_add_socket_if_not_exist(bNodeTree *ntree, bNode *node, int in_out, int type, int subtype, const char *identifier, const char *name)
float version_cycles_property_float(IDProperty *idprop, const char *name, float default_value)