9#define DNA_DEPRECATED_ALLOW
11#include <fmt/format.h>
87 idprops_process(&view_layer->id_properties, view_layer->system_properties);
90 if (scene->ed !=
nullptr) {
92 [&idprops_process](
Strip *strip) ->
bool {
93 idprops_process(&strip->prop, strip->system_properties);
104 idprops_process(&pchan->prop, pchan->system_properties);
110 idprops_process(&bcoll->prop, bcoll->system_properties);
113 idprops_process(&bone->prop, bone->system_properties);
125 if (
data->legacy_noise) {
141 if (curves.custom_knots !=
nullptr) {
146 &curves.curve_data,
CD_PROP_INT8,
"knots_mode", curves.curve_num));
147 if (knot_modes ==
nullptr) {
151 for (
const int curve : curves.curves_range()) {
152 int8_t &knot_mode = knot_modes[curve];
157 curves.nurbs_custom_knots_update_size();
195 switch (node->type_legacy) {
198 STRNCPY(node->idname,
"ShaderNodeValue");
202 STRNCPY(node->idname,
"ShaderNodeMath");
206 STRNCPY(node->idname,
"ShaderNodeCombineXYZ");
210 STRNCPY(node->idname,
"ShaderNodeSeparateXYZ");
214 STRNCPY(node->idname,
"ShaderNodeVectorCurve");
218 STRNCPY(node->idname,
"ShaderNodeValToRGB");
230 STRNCPY(node->idname,
"ShaderNodeMapRange");
234 data->clamp = node->custom1;
237 node->storage =
data;
249 STRNCPY(node->idname,
"ShaderNodeMix");
255 data->clamp_factor = 0;
257 data->blend_type = node->custom1;
258 node->storage =
data;
299 if (link->tosock == factor_input) {
302 else if (link->tosock == b_input) {
308 if (!factor_link && !b_link) {
359 *separate_color_node,
SOCK_IN,
"Image");
361 *separate_color_node,
SOCK_OUT,
"Alpha");
364 *node_tree, *b_link->
fromnode, *b_link->
fromsock, *separate_color_node, *image_input);
366 *node_tree, *separate_color_node, *alpha_output, *multiply_node, *multiply_input_b);
385 const float offset = texture_mapping.
loc[0];
386 const float size = texture_mapping.
size[0];
387 const float min = texture_mapping.
min[0];
388 const float max = texture_mapping.
max[0];
395 if (link->tosock == value_input) {
403 const float mapped_value = (value + offset) *
size;
418 if (link->fromnode != node) {
474 bNode *final_node = multiply_node;
496 final_node = max_node;
497 final_output = max_output;
519 final_node = min_node;
520 final_output = min_output;
525 if (link->fromnode != node) {
545 char escaped_node_name[
sizeof(node->name) * 2 + 1];
546 BLI_str_escape(escaped_node_name, node->name,
sizeof(escaped_node_name));
547 const std::string rna_path_prefix = fmt::format(
"nodes[\"{}\"].inputs", escaped_node_name);
549 switch (node->type_legacy) {
556 bmain,
id, rna_path_prefix.c_str(),
nullptr,
nullptr, 0, 1,
false);
565 bmain,
id, rna_path_prefix.c_str(),
nullptr,
nullptr, 1, 6,
false);
567 bmain,
id, rna_path_prefix.c_str(),
nullptr,
nullptr, 2, 7,
false);
595 *node,
SOCK_IN,
"Maximum Highlights");
627 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
629 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
634 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
640 MEM_freeN(fcurve->rna_path);
641 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
679 "Catadioptric Size");
698 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
700 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
705 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
711 char *old_rna_path = fcurve->
rna_path;
713 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
716 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
719 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
722 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
725 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
730 MEM_freeN(old_rna_path);
756 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
758 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
763 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
769 char *old_rna_path = fcurve->
rna_path;
771 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
774 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
779 MEM_freeN(old_rna_path);
838 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
840 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
845 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
851 char *old_rna_path = fcurve->
rna_path;
853 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
856 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
859 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
862 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
865 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
868 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
873 MEM_freeN(old_rna_path);
892 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
894 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
899 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
905 char *old_rna_path = fcurve->
rna_path;
907 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
911 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
914 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
919 MEM_freeN(old_rna_path);
938 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
940 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
945 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
951 char *old_rna_path = fcurve->
rna_path;
953 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
954 adjust_fcurve_key_frame_values(
955 fcurve, PROP_FLOAT, [&](const float value) { return value / 100.0f; });
959 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
962 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
966 if (fcurve->rna_path != old_rna_path) {
994 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
996 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1001 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1007 char *old_rna_path = fcurve->
rna_path;
1009 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1012 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1017 MEM_freeN(old_rna_path);
1043 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1045 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1050 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1056 char *old_rna_path = fcurve->
rna_path;
1058 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1061 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
1066 MEM_freeN(old_rna_path);
1116 "Light Adaptation");
1126 "Chromatic Adaptation",
1127 "Chromatic Adaptation");
1136 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1138 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1143 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1149 char *old_rna_path = fcurve->
rna_path;
1151 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1154 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1157 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1160 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1163 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
1166 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
1169 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
1174 MEM_freeN(old_rna_path);
1199 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1201 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1206 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1212 char *old_rna_path = fcurve->
rna_path;
1214 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1217 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1222 MEM_freeN(old_rna_path);
1241 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1243 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1248 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1254 char *old_rna_path = fcurve->
rna_path;
1256 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1261 MEM_freeN(old_rna_path);
1280 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1282 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1287 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1293 char *old_rna_path = fcurve->
rna_path;
1295 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1300 MEM_freeN(old_rna_path);
1342 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1344 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1349 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1355 char *old_rna_path = fcurve->
rna_path;
1357 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1360 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1363 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1366 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
1371 MEM_freeN(old_rna_path);
1391 "Neighbor Threshold",
1392 "Neighbor Threshold");
1402 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1404 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1409 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1415 char *old_rna_path = fcurve->
rna_path;
1417 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1420 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1425 MEM_freeN(old_rna_path);
1449 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1451 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1456 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1462 char *old_rna_path = fcurve->
rna_path;
1464 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1469 MEM_freeN(old_rna_path);
1510 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1512 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1517 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1523 char *old_rna_path = fcurve->
rna_path;
1525 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1528 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1530 adjust_fcurve_key_frame_values(
1531 fcurve, PROP_FLOAT, [&](const float value) { return value * 10.0f; });
1534 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1538 if (fcurve->rna_path != old_rna_path) {
1574 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1576 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1581 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1587 char *old_rna_path = fcurve->
rna_path;
1589 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1592 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1594 adjust_fcurve_key_frame_values(
1595 fcurve, PROP_FLOAT, [&](const float value) { return value * 2.0f; });
1599 if (fcurve->rna_path != old_rna_path) {
1631 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1633 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1638 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1644 char *old_rna_path = fcurve->
rna_path;
1646 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1649 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1654 MEM_freeN(old_rna_path);
1694 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1696 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1701 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1707 char *old_rna_path = fcurve->
rna_path;
1709 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1712 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1715 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1720 MEM_freeN(old_rna_path);
1760 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1762 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1767 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1773 char *old_rna_path = fcurve->
rna_path;
1775 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1778 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1781 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1786 MEM_freeN(old_rna_path);
1820 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1822 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1827 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1833 char *old_rna_path = fcurve->
rna_path;
1835 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1838 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1843 MEM_freeN(old_rna_path);
1874 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1876 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1881 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1887 char *old_rna_path = fcurve->
rna_path;
1889 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1892 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1897 MEM_freeN(old_rna_path);
1931 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1933 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1938 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1944 char *old_rna_path = fcurve->
rna_path;
1946 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1949 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1954 MEM_freeN(old_rna_path);
1979 "Use Spill Strength",
1980 "Use Spill Strength");
1998 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2000 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2005 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2011 char *old_rna_path = fcurve->
rna_path;
2013 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2016 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2019 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2020 fcurve->array_index = 0;
2023 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2024 fcurve->array_index = 1;
2027 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2028 fcurve->array_index = 2;
2033 MEM_freeN(old_rna_path);
2058 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2060 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2065 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2071 char *old_rna_path = fcurve->
rna_path;
2073 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
2078 MEM_freeN(old_rna_path);
2097 "Preprocess Blur Size",
2098 "Preprocess Blur Size");
2138 "Postprocess Blur Size",
2139 "Postprocess Blur Size");
2149 "Postprocess Dilate Size",
2150 "Postprocess Dilate Size");
2160 "Postprocess Feather Size",
2161 "Postprocess Feather Size");
2172 "Despill Strength");
2187 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2189 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2194 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2200 char *old_rna_path = fcurve->
rna_path;
2202 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2205 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2208 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2211 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
2214 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
2217 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
2220 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[10].default_value");
2223 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
2226 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[12].default_value");
2229 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
2232 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
2237 MEM_freeN(old_rna_path);
2262 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2264 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2269 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2275 char *old_rna_path = fcurve->
rna_path;
2277 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2280 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2285 MEM_freeN(old_rna_path);
2305 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2307 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2312 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2318 char *old_rna_path = fcurve->
rna_path;
2320 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2325 MEM_freeN(old_rna_path);
2362 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2364 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2369 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2375 char *old_rna_path = fcurve->
rna_path;
2377 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2380 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2383 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2388 MEM_freeN(old_rna_path);
2407 "Master Saturation",
2408 "Master Saturation");
2442 "Shadows Saturation",
2443 "Shadows Saturation");
2454 "Shadows Contrast");
2482 "Midtones Saturation",
2483 "Midtones Saturation");
2493 "Midtones Contrast",
2494 "Midtones Contrast");
2522 "Highlights Saturation",
2523 "Highlights Saturation");
2533 "Highlights Contrast",
2534 "Highlights Contrast");
2545 "Highlights Gamma");
2600 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2602 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2607 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2613 char *old_rna_path = fcurve->
rna_path;
2615 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2618 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2621 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2624 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2627 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
2630 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
2633 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
2636 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[8].default_value");
2639 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[9].default_value");
2642 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[10].default_value");
2645 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
2648 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[12].default_value");
2651 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
2654 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
2657 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[15].default_value");
2660 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[16].default_value");
2663 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[17].default_value");
2666 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[18].default_value");
2669 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[19].default_value");
2672 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[20].default_value");
2675 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[21].default_value");
2678 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[22].default_value");
2681 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[23].default_value");
2684 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[24].default_value");
2687 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[25].default_value");
2690 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[26].default_value");
2695 MEM_freeN(old_rna_path);
2730 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2732 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2737 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2743 char *old_rna_path = fcurve->
rna_path;
2745 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2748 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2751 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"distortion_type");
2756 MEM_freeN(old_rna_path);
2797 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2799 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2804 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2810 char *old_rna_path = fcurve->
rna_path;
2812 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2813 fcurve->array_index = 0;
2816 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2817 fcurve->array_index = 1;
2820 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2821 fcurve->array_index = 0;
2824 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2825 fcurve->array_index = 1;
2828 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2833 MEM_freeN(old_rna_path);
2875 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2877 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2882 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2888 char *old_rna_path = fcurve->
rna_path;
2890 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2891 fcurve->array_index = 0;
2894 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2895 fcurve->array_index = 1;
2898 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2899 fcurve->array_index = 0;
2902 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2903 fcurve->array_index = 1;
2906 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2911 MEM_freeN(old_rna_path);
2946 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2948 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2953 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2959 char *old_rna_path = fcurve->
rna_path;
2961 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2964 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2969 MEM_freeN(old_rna_path);
3029 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3031 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3036 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3042 char *old_rna_path = fcurve->
rna_path;
3044 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
3047 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3048 fcurve->array_index = 0;
3051 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3052 fcurve->array_index = 1;
3055 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3058 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3060 adjust_fcurve_key_frame_values(
3061 fcurve, PROP_FLOAT, [&](const float value) { return value + 1.0f; });
3064 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
3067 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
3071 if (fcurve->rna_path != old_rna_path) {
3089 storage->sigma_space);
3108 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3110 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3115 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3121 char *old_rna_path = fcurve->
rna_path;
3123 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3126 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3131 MEM_freeN(old_rna_path);
3153 node_to_image_link_map.
add_new(link->tonode->name, link);
3156 node_to_alpha_link_map.
add_new(link->tonode->name, link);
3170 if (!node_to_image_link_map.
contains(node->name)) {
3181 set_alpha_node->
location[0] = node->location[0] - node->width - 20.0f;
3182 set_alpha_node->
location[1] = node->location[1];
3188 *set_alpha_node,
SOCK_IN,
"Image");
3190 *set_alpha_node,
SOCK_OUT,
"Image");
3205 if (!node_to_alpha_link_map.
contains(node->name)) {
3215 set_alpha_node->
location[0] = node->location[0] - node->width - 20.0f;
3216 set_alpha_node->
location[1] = node->location[1];
3222 *set_alpha_node,
SOCK_IN,
"Image");
3224 *set_alpha_node,
SOCK_IN,
"Alpha");
3226 *set_alpha_node,
SOCK_OUT,
"Image");
3236 if (!node_to_image_link_map.
contains(node->name)) {
3261 if (!
bool(link->tonode->custom1)) {
3272 convert_alpha_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
3273 convert_alpha_node->
location[1] = link->tonode->location[1];
3277 *convert_alpha_node,
SOCK_IN,
"Image");
3279 *convert_alpha_node,
SOCK_OUT,
"Image");
3282 *node_tree, *link->fromnode, *link->fromsock, *convert_alpha_node, *convert_alpha_input);
3284 *node_tree, *convert_alpha_node, *convert_alpha_output, *link->tonode, *link->tosock);
3294 if (!
bool(link->fromnode->custom1)) {
3301 convert_alpha_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3302 convert_alpha_node->
location[1] = link->fromnode->location[1];
3306 *convert_alpha_node,
SOCK_IN,
"Image");
3308 *convert_alpha_node,
SOCK_OUT,
"Image");
3311 *node_tree, *link->fromnode, *link->fromsock, *convert_alpha_node, *convert_alpha_input);
3313 *node_tree, *convert_alpha_node, *convert_alpha_output, *link->tonode, *link->tosock);
3328 const float mix_factor =
static_cast<NodeTwoFloats *
>(link->tonode->storage)->
x;
3329 if (mix_factor == 0.0f) {
3338 link->tonode->custom1 =
false;
3342 mix_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
3343 mix_node->
location[1] = link->tonode->location[1];
3349 *mix_node,
SOCK_IN,
"Factor_Float");
3356 to_straight_node->parent = link->tonode->parent;
3357 to_straight_node->location[0] = mix_node->
location[0] - mix_node->
width - 20.0f;
3358 to_straight_node->location[1] = mix_node->
location[1];
3362 *to_straight_node,
SOCK_IN,
"Image");
3364 *to_straight_node,
SOCK_OUT,
"Image");
3369 to_premultiplied_node->
location[0] = to_straight_node->location[0] - to_straight_node->width -
3371 to_premultiplied_node->
location[1] = to_straight_node->location[1];
3375 *to_premultiplied_node,
SOCK_IN,
"Image");
3377 *to_premultiplied_node,
SOCK_OUT,
"Image");
3382 *to_premultiplied_node,
3383 *to_premultiplied_input);
3385 *to_premultiplied_node,
3386 *to_premultiplied_output,
3388 *to_straight_input);
3390 *node_tree, *to_premultiplied_node, *to_premultiplied_output, *mix_node, *mix_b_input);
3392 *node_tree, *to_straight_node, *to_straight_output, *mix_node, *mix_a_input);
3402 node->storage =
nullptr;
3422 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3424 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3429 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3435 char *old_rna_path = fcurve->
rna_path;
3437 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3442 MEM_freeN(old_rna_path);
3462 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3464 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3469 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3475 char *old_rna_path = fcurve->
rna_path;
3477 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3482 MEM_freeN(old_rna_path);
3500 const float x = link->fromnode->custom3;
3501 const float y = link->fromnode->custom4;
3502 if (
x == 0.0f &&
y == 0.0f) {
3509 translate_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3510 translate_node->
location[1] = link->fromnode->location[1];
3516 *translate_node,
SOCK_IN,
"Image");
3520 *translate_node,
SOCK_OUT,
"Image");
3526 *node_tree, *link->fromnode, *link->fromsock, *translate_node, *translate_image_input);
3528 *node_tree, *translate_node, *translate_image_output, *link->tonode, *link->tosock);
3541 int bytes_processed = 0;
3542 while (bytes_processed < string_array_length &&
string[bytes_processed] !=
'\0') {
3543 if (
string[bytes_processed] ==
'{') {
3545 string, string_array_length, bytes_processed, bytes_processed + 1,
"{{");
3546 bytes_processed += 2;
3549 if (
string[bytes_processed] ==
'}') {
3551 string, string_array_length, bytes_processed, bytes_processed + 1,
"}}");
3552 bytes_processed += 2;
3586 gamma_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
3587 gamma_node->
location[1] = link->tonode->location[1];
3620 gamma_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3621 gamma_node->
location[1] = link->fromnode->location[1];
3649 if (!
STREQ(node->idname,
"CompositorNodeOutputFile")) {
3669 if (!
STREQ(node->idname,
"CompositorNodeTranslate")) {
3678 if (!
bool(
data->relative)) {
3687 if (link->tonode != node) {
3712 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3714 x_relative_to_pixel_node->
location[0] = node->location[0] - node->width - 20.0f;
3715 x_relative_to_pixel_node->
location[1] = node->location[1];
3721 *x_relative_to_pixel_node,
SOCK_IN,
"Image");
3723 *x_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3725 *x_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3735 *x_relative_to_pixel_node,
3742 *x_relative_to_pixel_node,
3750 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3752 y_relative_to_pixel_node->
location[0] = node->location[0] - node->width - 20.0f;
3753 y_relative_to_pixel_node->
location[1] = node->location[1] - 20.0f;
3759 *y_relative_to_pixel_node,
SOCK_IN,
"Image");
3761 *y_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3763 *y_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3773 *y_relative_to_pixel_node,
3780 *y_relative_to_pixel_node,
3829 if (link->tonode != node) {
3839 if (!
bool(node->
custom2) || !image_link) {
3846 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3855 *x_relative_to_pixel_node,
SOCK_IN,
"Image");
3857 *x_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3859 *x_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3868 *x_relative_to_pixel_node,
3872 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3881 *y_relative_to_pixel_node,
SOCK_IN,
"Image");
3883 *y_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3885 *y_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3894 *y_relative_to_pixel_node,
3898 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3907 *width_relative_to_pixel_node,
SOCK_IN,
"Image");
3909 *width_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3911 *width_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3918 *node_tree, *width_relative_to_pixel_node, *width_value_output, *node, *width_input);
3922 *width_relative_to_pixel_node,
3923 *width_image_input);
3926 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3935 *height_relative_to_pixel_node,
SOCK_IN,
"Image");
3937 *height_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3939 *height_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3946 *node_tree, *height_relative_to_pixel_node, *height_value_output, *node, *height_input);
3950 *height_relative_to_pixel_node,
3951 *height_image_input);
3961 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3963 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3968 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3974 char *old_rna_path = fcurve->
rna_path;
3976 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
3979 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3982 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3985 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3988 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
3989 adjust_fcurve_key_frame_values(
3990 fcurve, PROP_BOOLEAN, [&](const float value) { return 1.0f - value; });
3994 if (fcurve->rna_path != old_rna_path) {
4056 "Input Temperature",
4073 "Output Temperature",
4093 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
4095 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
4100 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
4106 char *old_rna_path = fcurve->
rna_path;
4108 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
4111 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
4114 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
4117 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[8].default_value");
4120 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[9].default_value");
4123 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
4126 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
4129 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
4132 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[15].default_value");
4135 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[16].default_value");
4138 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[17].default_value");
4143 MEM_freeN(old_rna_path);
4153 if (!
STREQ(node->idname,
"CompositorNodeImageInfo")) {
4158 bNodeLink *output_texture_link =
nullptr;
4161 if (link->tonode == node) {
4165 if (link->fromnode == node &&
4168 output_texture_link = link;
4171 if (link->fromnode == node &&
4174 output_pixel_link = link;
4178 if (!output_texture_link && !output_pixel_link) {
4183 nullptr, *node_tree,
"CompositorNodeImageCoordinates");
4185 image_coordinates_node->
location[0] = node->location[0];
4186 image_coordinates_node->
location[1] = node->location[1] - node->height - 10.0f;
4190 *image_coordinates_node,
SOCK_IN,
"Image");
4194 *image_coordinates_node,
4198 if (output_texture_link) {
4200 *image_coordinates_node,
SOCK_OUT,
"Uniform");
4202 *image_coordinates_node,
4204 *output_texture_link->
tonode,
4205 *output_texture_link->
tosock);
4209 if (output_pixel_link) {
4211 *image_coordinates_node,
SOCK_OUT,
"Pixel");
4213 *image_coordinates_node,
4215 *output_pixel_link->
tonode,
4216 *output_pixel_link->
tosock);
4290 if (link->tonode != node) {
4305 nullptr, *node_tree,
"ShaderNodeVectorMath");
4315 *multiply_node,
SOCK_OUT,
"Vector");
4329 *node_tree, *size_link->
fromnode, *size_link->
fromsock, *multiply_node, *scale_input);
4331 *node_tree, *multiply_node, *vector_output, *node, *size_input);
4333 size_link = &new_link;
4337 if (!
bool(storage->
relative) || !image_link) {
4342 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
4348 switch (storage->
aspect) {
4356 relative_to_pixel_node->
custom2 =
4365 *relative_to_pixel_node,
SOCK_IN,
"Image");
4367 *relative_to_pixel_node,
SOCK_IN,
"Vector Value");
4369 *relative_to_pixel_node,
SOCK_OUT,
"Vector Value");
4374 *relative_to_pixel_node,
4380 *relative_to_pixel_node,
4399 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
4401 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
4406 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
4412 char *old_rna_path = fcurve->
rna_path;
4414 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
4415 fcurve->array_index = 0;
4418 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
4419 fcurve->array_index = 1;
4422 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
4425 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
4426 adjust_fcurve_key_frame_values(
4427 fcurve, PROP_BOOLEAN, [&](const float value) { return 1.0f - value; });
4431 if (fcurve->rna_path != old_rna_path) {
4498 links_to_level_and_max_inputs.
add(link->tosock, link);
4515 *origin_node,
SOCK_IN,
"Max");
4517 !links_to_level_and_max_inputs.
contains(max_input_socket))
4528 clamp_node.
location[0] = node->location[0] - 25;
4529 clamp_node.
location[1] = node->location[1];
4531 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Value");
4533 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Min");
4535 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Max");
4537 tree, clamp_node,
SOCK_OUT,
"NodeSocketFloat",
"Result");
4542 link->
tosock = &clamp_value_input;
4548 value->
value = std::clamp(value->
value, 0, 11);
4558 float old_hsv_jitter[3] = {
4627 for (ID *slot_user : slot_users) {
4628 PointerRNA slot_user_ptr = RNA_id_pointer_create(slot_user);
4631 if (!RNA_path_resolve_property(&slot_user_ptr, fcurve.rna_path, &ptr, &prop)) {
4635 blender::animrig::update_autoflags_fcurve_direct(&fcurve, RNA_property_type(prop));
5175 scene->toolsettings->snap_step_frames = toolsettings_default.
snap_step_frames;
5176 scene->toolsettings->snap_step_seconds = toolsettings_default.
snap_step_seconds;
5213 if (brush->gpencil_settings) {
5230 if (layer.name == name) {
5241 if (!old_seam_layer) {
5247 names.
add(layer.name);
5252 names.
add(layer.name);
5257 names.
add(layer.name);
5262 names.
add(layer.name);
5266 names.
add(vertex_group->name);
5281 if (
STREQ(node->idname,
"GeometryNodeCurveToMesh")) {
5282 curve_to_mesh_nodes.
add(node);
5286 for (
bNode *curve_to_mesh : curve_to_mesh_nodes) {
5307 named_attribute.storage = named_attribute_storage;
5308 named_attribute.parent = curve_to_mesh->parent;
5309 named_attribute.location[0] = curve_to_mesh->location[0] - 25;
5310 named_attribute.location[1] = curve_to_mesh->location[1];
5325 switch_node.
storage = switch_storage;
5327 switch_node.
location[0] = curve_to_mesh->location[0] - 25;
5328 switch_node.
location[1] = curve_to_mesh->location[1];
5378 if (scene->ed !=
nullptr) {
5423 if (sima->
flag & SI_NO_DRAW_TEXPAINT) {
5440 const char *workspace_name = screen->id.name + 2;
5444 if (
STREQ(workspace_name,
"UV Editing")) {
5456 if (
ELEM(brush->sculpt_brush_type,
5457 SCULPT_BRUSH_TYPE_FLATTEN,
5458 SCULPT_BRUSH_TYPE_FILL,
5459 SCULPT_BRUSH_TYPE_SCRAPE))
5461 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_FLATTEN) {
5462 brush->plane_height = 1.0f;
5463 brush->plane_depth = 1.0f;
5464 brush->area_radius_factor = 1.0f;
5468 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_FILL) {
5469 brush->plane_height = 0.0f;
5470 brush->plane_depth = 1.0f;
5476 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_SCRAPE) {
5477 brush->plane_height = 1.0f;
5478 brush->plane_depth = 0.0f;
5495 brush->plane_offset *= -1.0f;
5499 brush->plane_height *= brush->plane_trim;
5500 brush->plane_depth *= brush->plane_trim;
5515 if (item.
item_type == eNodeTreeInterfaceItemType::NODE_INTERFACE_SOCKET) {
5536 &arm->bonebase, [](
Bone *bone) { bone->drawtype = ARM_DRAW_TYPE_ARMATURE_DEFINED; });
5537 BLI_assert_msg(!arm->edbo,
"Armatures should not be saved in edit mode");
5575 if (
STREQ(node->idname,
"GeometryNodeStoreNamedGrid")) {
5576 switch (node->custom1) {
5628 if (node->storage !=
nullptr) {
5633 node->storage =
data;
5641 scene->grease_pencil_settings.smaa_threshold_render =
5642 scene->grease_pencil_settings.smaa_threshold;
5643 scene->grease_pencil_settings.aa_samples = 1;
5684 if (slot->name[0]) {
5690 scene->r.ppm_factor = 72.0f;
5691 scene->r.ppm_base = 0.0254f;
6025 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
6168 if (bone->parent && (bone->flag & BONE_CONNECTED)) {
6169 bone->rad_head = bone->parent->rad_tail;
6175 ebone->rad_head = ebone->parent->rad_tail;
6266 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
6299 if (scene->nodetree) {
6313 if (brush->tip_scale_x == 0.0f) {
6314 brush->tip_scale_x = 1.0f;
6368 if (nu->pntsv > 1) {
6374 cu->ob_type = ob_type;
6402 if (light->temperature == 0.0f) {
6403 light->temperature = 6500.0f;
6461 ob->soft->fuzzyness = std::max<int>(1, ob->soft->fuzzyness);
6494 if (brush->gpencil_settings) {
6508 if (lmd->
radius != 0.0f) {
6521 UvSculpt &uvsculpt = scene->toolsettings->uvsculpt;
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)
void BKE_animdata_fix_paths_rename_all_ex(struct Main *bmain, struct ID *ref_id, const char *prefix, const char *oldName, const char *newName, int oldSubscript, int newSubscript, bool verify_paths)
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.
void IDP_MergeGroup_ex(IDProperty *dest, const IDProperty *src, bool do_overwrite, int flag) ATTR_NONNULL()
IDProperty * IDP_CopyProperty_ex(const IDProperty *prop, int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void BKE_lib_override_flag_subdata_local(ID *id)
#define FOREACH_MAIN_ID_END
#define MAIN_VERSION_FILE_ATLEAST(main, ver, subver)
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
#define FOREACH_NODETREE_END
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
#define CMP_NODE_PREMULKEY
#define CMP_NODE_VALTORGB
#define GEO_NODE_SUBDIVISION_SURFACE
#define CMP_NODE_COMBINE_XYZ
#define CMP_NODE_COMPOSITE
#define CMP_NODE_MAP_RANGE
#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_SEPARATE_COLOR
#define CMP_NODE_BILATERALBLUR
#define CMP_NODE_MAP_VALUE
#define CMP_NODE_TRANSLATE
#define CMP_NODE_COLORBALANCE
#define SH_NODE_MAP_RANGE
#define CMP_NODE_BOKEHIMAGE
#define CMP_NODE_KUWAHARA
#define CMP_NODE_DIFF_MATTE
#define SH_NODE_CURVE_VEC
#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_COLORCORRECTION
#define CMP_NODE_SETALPHA
#define CMP_NODE_STABILIZE2D
#define CMP_NODE_PIXELATE
#define CMP_NODE_MASK_BOX
#define CMP_NODE_SEPARATE_XYZ
#define CMP_NODE_ANTIALIASING
#define CMP_NODE_CURVE_VEC
#define CMP_NODE_COLOR_MATTE
#define CMP_NODE_DIST_MATTE
#define CMP_NODE_SUNBEAMS
#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)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
#define LISTBASE_FOREACH_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])
MINLINE bool is_zero_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
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 void BLI_uniquename_cb(blender::FunctionRef< bool(blender::StringRefNull)> unique_check, const char *defname, char delim, char *name, size_t name_maxncpy) ATTR_NONNULL(2
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)
@ eModifierType_GreasePencilLineart
@ 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_BLUR_ASPECT_NONE
@ CMP_NODE_RELATIVE_TO_PIXEL_DATA_TYPE_VECTOR
@ CMP_NODE_RELATIVE_TO_PIXEL_DATA_TYPE_FLOAT
@ CMP_NODE_CORNER_PIN_INTERPOLATION_ANISOTROPIC
@ 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_OUTPUT_IGNORE_ALPHA
@ CMP_NODE_LENS_DISTORTION_RADIAL
@ CMP_NODE_LENS_DISTORTION_HORIZONTAL
@ SEQ_SNAP_TO_FRAME_RANGE
@ STRIP_TYPE_OVERDROP_REMOVED
@ FILE_ASSET_IMPORT_INSTANCE_COLLECTIONS_ON_LINK
@ V2D_ZOOM_IGNORE_KEEPOFS
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
bool contains(const Key &key) const
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()
#define ID_IS_LINKED(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
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)
constexpr float LEGACY_RADIUS_CONVERSION_FACTOR
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)
void mesh_sculpt_mask_to_generic(Mesh &mesh)
bNodeSocket * node_find_socket(bNode &node, eNodeSocketInOut in_out, StringRef identifier)
void node_remove_node(Main *bmain, bNodeTree &ntree, bNode &node, bool do_id_user, bool remove_animation=true)
bNode * node_add_node(const bContext *C, bNodeTree &ntree, StringRef idname)
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 mesh_custom_normals_to_generic(Mesh &mesh)
T min(const T &a, const T &b)
T max(const T &a, const T &b)
void for_each_callback(ListBase *seqbase, ForEachFunc callback, void *user_data)
SequencerToolSettings * tool_settings_ensure(Scene *scene)
float wrap(float value, float max, float min)
struct CurveMapping * curve_rand_saturation
struct CurveMapping * curve_rand_hue
struct CurveMapping * curve_rand_value
struct CurveMapping * curve_rand_saturation
struct CurveMapping * curve_rand_hue
struct CurveMapping * curve_rand_value
struct BrushGpencilSettings * gpencil_settings
FileSelectParams base_params
unsigned short list_column_size
unsigned short list_thumbnail_size
IDProperty * system_properties
ListBase vertex_group_names
float shadow_terminator_shading_offset
float shadow_terminator_geometry_offset
float shadow_terminator_normal_offset
FileSelectParams * params
FileAssetSelectParams * asset_params
struct CurveMapping * curve_rand_value
struct CurveMapping * curve_rand_saturation
struct CurveMapping * curve_rand_hue
struct CurveMapping * strength_curve
bNodeTreeInterface tree_interface
static bNode * add_node(bNodeTree *ntree, const int type, const blender::float2 loc)
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_map_value_node(bNodeTree *node_tree, bNode *node)
static void do_version_mix_color_use_alpha(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_convert_to_generic_nodes_after_linking(Main *bmain, bNodeTree *node_tree, ID *id)
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)
void version_forward_compat_system_idprops(Main *bmain)
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 CustomDataLayer * find_old_seam_layer(CustomData &custom_data, const blender::StringRef name)
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_convert_gp_jitter_values(Brush *brush)
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_convert_to_generic_nodes(bNodeTree *node_tree)
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 rename_mesh_uv_seam_attribute(Mesh &mesh)
static void do_version_blur_node_options_to_inputs(bNodeTree *node_tree, bNode *node)
IDProperty * version_cycles_properties_from_ID(ID *id)
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)