9#define DNA_DEPRECATED_ALLOW
11#include <fmt/format.h>
86 idprops_process(&view_layer->id_properties, view_layer->system_properties);
89 if (scene->ed !=
nullptr) {
91 [&idprops_process](
Strip *strip) ->
bool {
92 idprops_process(&strip->prop, strip->system_properties);
103 idprops_process(&pchan->prop, pchan->system_properties);
109 idprops_process(&bcoll->prop, bcoll->system_properties);
112 idprops_process(&bone->prop, bone->system_properties);
124 if (
data->legacy_noise) {
140 if (curves.custom_knots !=
nullptr) {
145 &curves.curve_data,
CD_PROP_INT8,
"knots_mode", curves.curve_num));
146 if (knot_modes ==
nullptr) {
150 for (
const int curve : curves.curves_range()) {
151 int8_t &knot_mode = knot_modes[curve];
156 curves.nurbs_custom_knots_update_size();
194 switch (node->type_legacy) {
197 STRNCPY(node->idname,
"ShaderNodeValue");
201 STRNCPY(node->idname,
"ShaderNodeMath");
205 STRNCPY(node->idname,
"ShaderNodeCombineXYZ");
209 STRNCPY(node->idname,
"ShaderNodeSeparateXYZ");
213 STRNCPY(node->idname,
"ShaderNodeVectorCurve");
217 STRNCPY(node->idname,
"ShaderNodeValToRGB");
229 STRNCPY(node->idname,
"ShaderNodeMapRange");
233 data->clamp = node->custom1;
236 node->storage =
data;
248 STRNCPY(node->idname,
"ShaderNodeMix");
254 data->clamp_factor = 0;
256 data->blend_type = node->custom1;
257 node->storage =
data;
298 if (link->tosock == factor_input) {
301 else if (link->tosock == b_input) {
307 if (!factor_link && !b_link) {
358 *separate_color_node,
SOCK_IN,
"Image");
360 *separate_color_node,
SOCK_OUT,
"Alpha");
363 *node_tree, *b_link->
fromnode, *b_link->
fromsock, *separate_color_node, *image_input);
365 *node_tree, *separate_color_node, *alpha_output, *multiply_node, *multiply_input_b);
384 const float offset = texture_mapping.
loc[0];
385 const float size = texture_mapping.
size[0];
386 const float min = texture_mapping.
min[0];
387 const float max = texture_mapping.
max[0];
394 if (link->tosock == value_input) {
402 const float mapped_value = (value + offset) *
size;
417 if (link->fromnode != node) {
473 bNode *final_node = multiply_node;
495 final_node = max_node;
496 final_output = max_output;
518 final_node = min_node;
519 final_output = min_output;
524 if (link->fromnode != node) {
544 char escaped_node_name[
sizeof(node->name) * 2 + 1];
545 BLI_str_escape(escaped_node_name, node->name,
sizeof(escaped_node_name));
546 const std::string rna_path_prefix = fmt::format(
"nodes[\"{}\"].inputs", escaped_node_name);
548 switch (node->type_legacy) {
555 bmain,
id, rna_path_prefix.c_str(),
nullptr,
nullptr, 0, 1,
false);
564 bmain,
id, rna_path_prefix.c_str(),
nullptr,
nullptr, 1, 6,
false);
566 bmain,
id, rna_path_prefix.c_str(),
nullptr,
nullptr, 2, 7,
false);
594 *node,
SOCK_IN,
"Maximum Highlights");
626 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
628 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
633 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
639 MEM_freeN(fcurve->rna_path);
640 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
678 "Catadioptric Size");
697 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
699 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
704 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
710 char *old_rna_path = fcurve->
rna_path;
712 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
715 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
718 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
721 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
724 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
729 MEM_freeN(old_rna_path);
755 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
757 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
762 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
768 char *old_rna_path = fcurve->
rna_path;
770 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
773 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
778 MEM_freeN(old_rna_path);
837 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
839 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
844 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
850 char *old_rna_path = fcurve->
rna_path;
852 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
855 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
858 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
861 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
864 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
867 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
872 MEM_freeN(old_rna_path);
891 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
893 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
898 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
904 char *old_rna_path = fcurve->
rna_path;
906 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
910 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
913 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
918 MEM_freeN(old_rna_path);
937 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
939 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
944 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
950 char *old_rna_path = fcurve->
rna_path;
952 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
953 adjust_fcurve_key_frame_values(
954 fcurve, PROP_FLOAT, [&](const float value) { return value / 100.0f; });
958 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
961 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
965 if (fcurve->rna_path != old_rna_path) {
993 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
995 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1000 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1006 char *old_rna_path = fcurve->
rna_path;
1008 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1011 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1016 MEM_freeN(old_rna_path);
1042 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1044 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1049 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1055 char *old_rna_path = fcurve->
rna_path;
1057 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1060 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
1065 MEM_freeN(old_rna_path);
1115 "Light Adaptation");
1125 "Chromatic Adaptation",
1126 "Chromatic Adaptation");
1135 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1137 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1142 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1148 char *old_rna_path = fcurve->
rna_path;
1150 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1153 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1156 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1159 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1162 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
1165 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
1168 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
1173 MEM_freeN(old_rna_path);
1198 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1200 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1205 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1211 char *old_rna_path = fcurve->
rna_path;
1213 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1216 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1221 MEM_freeN(old_rna_path);
1240 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1242 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1247 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1253 char *old_rna_path = fcurve->
rna_path;
1255 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1260 MEM_freeN(old_rna_path);
1279 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1281 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1286 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1292 char *old_rna_path = fcurve->
rna_path;
1294 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1299 MEM_freeN(old_rna_path);
1341 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1343 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1348 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1354 char *old_rna_path = fcurve->
rna_path;
1356 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1359 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1362 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1365 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
1370 MEM_freeN(old_rna_path);
1390 "Neighbor Threshold",
1391 "Neighbor Threshold");
1401 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1403 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1408 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1414 char *old_rna_path = fcurve->
rna_path;
1416 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1419 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1424 MEM_freeN(old_rna_path);
1448 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1450 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1455 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1461 char *old_rna_path = fcurve->
rna_path;
1463 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1468 MEM_freeN(old_rna_path);
1509 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1511 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1516 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1522 char *old_rna_path = fcurve->
rna_path;
1524 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1527 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1529 adjust_fcurve_key_frame_values(
1530 fcurve, PROP_FLOAT, [&](const float value) { return value * 10.0f; });
1533 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1537 if (fcurve->rna_path != old_rna_path) {
1573 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1575 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1580 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1586 char *old_rna_path = fcurve->
rna_path;
1588 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1591 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1593 adjust_fcurve_key_frame_values(
1594 fcurve, PROP_FLOAT, [&](const float value) { return value * 2.0f; });
1598 if (fcurve->rna_path != old_rna_path) {
1630 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1632 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1637 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1643 char *old_rna_path = fcurve->
rna_path;
1645 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1648 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1653 MEM_freeN(old_rna_path);
1693 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1695 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1700 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1706 char *old_rna_path = fcurve->
rna_path;
1708 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1711 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1714 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1719 MEM_freeN(old_rna_path);
1759 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1761 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1766 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1772 char *old_rna_path = fcurve->
rna_path;
1774 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1777 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1780 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
1785 MEM_freeN(old_rna_path);
1819 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1821 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1826 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1832 char *old_rna_path = fcurve->
rna_path;
1834 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1837 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1842 MEM_freeN(old_rna_path);
1873 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1875 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1880 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1886 char *old_rna_path = fcurve->
rna_path;
1888 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1891 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
1896 MEM_freeN(old_rna_path);
1930 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1932 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
1937 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
1943 char *old_rna_path = fcurve->
rna_path;
1945 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
1948 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
1953 MEM_freeN(old_rna_path);
1978 "Use Spill Strength",
1979 "Use Spill Strength");
1997 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
1999 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2004 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2010 char *old_rna_path = fcurve->
rna_path;
2012 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2015 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2018 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2019 fcurve->array_index = 0;
2022 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2023 fcurve->array_index = 1;
2026 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2027 fcurve->array_index = 2;
2032 MEM_freeN(old_rna_path);
2057 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2059 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2064 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2070 char *old_rna_path = fcurve->
rna_path;
2072 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[0].default_value");
2077 MEM_freeN(old_rna_path);
2096 "Preprocess Blur Size",
2097 "Preprocess Blur Size");
2137 "Postprocess Blur Size",
2138 "Postprocess Blur Size");
2148 "Postprocess Dilate Size",
2149 "Postprocess Dilate Size");
2159 "Postprocess Feather Size",
2160 "Postprocess Feather Size");
2171 "Despill Strength");
2186 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2188 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2193 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2199 char *old_rna_path = fcurve->
rna_path;
2201 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2204 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2207 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2210 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
2213 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
2216 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
2219 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[10].default_value");
2222 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
2225 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[12].default_value");
2228 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
2231 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
2236 MEM_freeN(old_rna_path);
2261 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2263 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2268 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2274 char *old_rna_path = fcurve->
rna_path;
2276 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2279 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2284 MEM_freeN(old_rna_path);
2304 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2306 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2311 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2317 char *old_rna_path = fcurve->
rna_path;
2319 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2324 MEM_freeN(old_rna_path);
2361 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2363 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2368 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2374 char *old_rna_path = fcurve->
rna_path;
2376 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2379 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2382 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2387 MEM_freeN(old_rna_path);
2406 "Master Saturation",
2407 "Master Saturation");
2441 "Shadows Saturation",
2442 "Shadows Saturation");
2453 "Shadows Contrast");
2481 "Midtones Saturation",
2482 "Midtones Saturation");
2492 "Midtones Contrast",
2493 "Midtones Contrast");
2521 "Highlights Saturation",
2522 "Highlights Saturation");
2532 "Highlights Contrast",
2533 "Highlights Contrast");
2544 "Highlights Gamma");
2599 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2601 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2606 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2612 char *old_rna_path = fcurve->
rna_path;
2614 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2617 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2620 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2623 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2626 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
2629 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
2632 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
2635 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[8].default_value");
2638 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[9].default_value");
2641 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[10].default_value");
2644 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
2647 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[12].default_value");
2650 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
2653 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
2656 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[15].default_value");
2659 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[16].default_value");
2662 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[17].default_value");
2665 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[18].default_value");
2668 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[19].default_value");
2671 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[20].default_value");
2674 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[21].default_value");
2677 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[22].default_value");
2680 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[23].default_value");
2683 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[24].default_value");
2686 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[25].default_value");
2689 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[26].default_value");
2694 MEM_freeN(old_rna_path);
2729 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2731 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2736 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2742 char *old_rna_path = fcurve->
rna_path;
2744 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2747 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2750 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"distortion_type");
2755 MEM_freeN(old_rna_path);
2796 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2798 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2803 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2809 char *old_rna_path = fcurve->
rna_path;
2811 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2812 fcurve->array_index = 0;
2815 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2816 fcurve->array_index = 1;
2819 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2820 fcurve->array_index = 0;
2823 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2824 fcurve->array_index = 1;
2827 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2832 MEM_freeN(old_rna_path);
2874 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2876 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2881 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2887 char *old_rna_path = fcurve->
rna_path;
2889 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2890 fcurve->array_index = 0;
2893 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2894 fcurve->array_index = 1;
2897 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2898 fcurve->array_index = 0;
2901 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
2902 fcurve->array_index = 1;
2905 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
2910 MEM_freeN(old_rna_path);
2945 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
2947 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
2952 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
2958 char *old_rna_path = fcurve->
rna_path;
2960 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
2963 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
2968 MEM_freeN(old_rna_path);
3028 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3030 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3035 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3041 char *old_rna_path = fcurve->
rna_path;
3043 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
3046 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3047 fcurve->array_index = 0;
3050 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3051 fcurve->array_index = 1;
3054 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3057 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3059 adjust_fcurve_key_frame_values(
3060 fcurve, PROP_FLOAT, [&](const float value) { return value + 1.0f; });
3063 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
3066 fcurve->rna_path =
BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[6].default_value");
3070 if (fcurve->rna_path != old_rna_path) {
3088 storage->sigma_space);
3107 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3109 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3114 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3120 char *old_rna_path = fcurve->
rna_path;
3122 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3125 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3130 MEM_freeN(old_rna_path);
3152 node_to_image_link_map.
add_new(link->tonode->name, link);
3155 node_to_alpha_link_map.
add_new(link->tonode->name, link);
3169 if (!node_to_image_link_map.
contains(node->name)) {
3180 set_alpha_node->
location[0] = node->location[0] - node->width - 20.0f;
3181 set_alpha_node->
location[1] = node->location[1];
3187 *set_alpha_node,
SOCK_IN,
"Image");
3189 *set_alpha_node,
SOCK_OUT,
"Image");
3204 if (!node_to_alpha_link_map.
contains(node->name)) {
3214 set_alpha_node->
location[0] = node->location[0] - node->width - 20.0f;
3215 set_alpha_node->
location[1] = node->location[1];
3221 *set_alpha_node,
SOCK_IN,
"Image");
3223 *set_alpha_node,
SOCK_IN,
"Alpha");
3225 *set_alpha_node,
SOCK_OUT,
"Image");
3235 if (!node_to_image_link_map.
contains(node->name)) {
3260 if (!
bool(link->tonode->custom1)) {
3271 convert_alpha_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
3272 convert_alpha_node->
location[1] = link->tonode->location[1];
3276 *convert_alpha_node,
SOCK_IN,
"Image");
3278 *convert_alpha_node,
SOCK_OUT,
"Image");
3281 *node_tree, *link->fromnode, *link->fromsock, *convert_alpha_node, *convert_alpha_input);
3283 *node_tree, *convert_alpha_node, *convert_alpha_output, *link->tonode, *link->tosock);
3293 if (!
bool(link->fromnode->custom1)) {
3300 convert_alpha_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3301 convert_alpha_node->
location[1] = link->fromnode->location[1];
3305 *convert_alpha_node,
SOCK_IN,
"Image");
3307 *convert_alpha_node,
SOCK_OUT,
"Image");
3310 *node_tree, *link->fromnode, *link->fromsock, *convert_alpha_node, *convert_alpha_input);
3312 *node_tree, *convert_alpha_node, *convert_alpha_output, *link->tonode, *link->tosock);
3327 const float mix_factor =
static_cast<NodeTwoFloats *
>(link->tonode->storage)->
x;
3328 if (mix_factor == 0.0f) {
3337 link->tonode->custom1 =
false;
3341 mix_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
3342 mix_node->
location[1] = link->tonode->location[1];
3348 *mix_node,
SOCK_IN,
"Factor_Float");
3355 to_straight_node->parent = link->tonode->parent;
3356 to_straight_node->location[0] = mix_node->
location[0] - mix_node->
width - 20.0f;
3357 to_straight_node->location[1] = mix_node->
location[1];
3361 *to_straight_node,
SOCK_IN,
"Image");
3363 *to_straight_node,
SOCK_OUT,
"Image");
3368 to_premultiplied_node->
location[0] = to_straight_node->location[0] - to_straight_node->width -
3370 to_premultiplied_node->
location[1] = to_straight_node->location[1];
3374 *to_premultiplied_node,
SOCK_IN,
"Image");
3376 *to_premultiplied_node,
SOCK_OUT,
"Image");
3381 *to_premultiplied_node,
3382 *to_premultiplied_input);
3384 *to_premultiplied_node,
3385 *to_premultiplied_output,
3387 *to_straight_input);
3389 *node_tree, *to_premultiplied_node, *to_premultiplied_output, *mix_node, *mix_b_input);
3391 *node_tree, *to_straight_node, *to_straight_output, *mix_node, *mix_a_input);
3401 node->storage =
nullptr;
3421 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3423 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3428 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3434 char *old_rna_path = fcurve->
rna_path;
3436 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3441 MEM_freeN(old_rna_path);
3461 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3463 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3468 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3474 char *old_rna_path = fcurve->
rna_path;
3476 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3481 MEM_freeN(old_rna_path);
3499 const float x = link->fromnode->custom3;
3500 const float y = link->fromnode->custom4;
3501 if (
x == 0.0f &&
y == 0.0f) {
3508 translate_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3509 translate_node->
location[1] = link->fromnode->location[1];
3515 *translate_node,
SOCK_IN,
"Image");
3519 *translate_node,
SOCK_OUT,
"Image");
3525 *node_tree, *link->fromnode, *link->fromsock, *translate_node, *translate_image_input);
3527 *node_tree, *translate_node, *translate_image_output, *link->tonode, *link->tosock);
3540 int bytes_processed = 0;
3541 while (bytes_processed < string_array_length &&
string[bytes_processed] !=
'\0') {
3542 if (
string[bytes_processed] ==
'{') {
3544 string, string_array_length, bytes_processed, bytes_processed + 1,
"{{");
3545 bytes_processed += 2;
3548 if (
string[bytes_processed] ==
'}') {
3550 string, string_array_length, bytes_processed, bytes_processed + 1,
"}}");
3551 bytes_processed += 2;
3585 gamma_node->
location[0] = link->tonode->location[0] - link->tonode->width - 20.0f;
3586 gamma_node->
location[1] = link->tonode->location[1];
3619 gamma_node->
location[0] = link->fromnode->location[0] + link->fromnode->width + 20.0f;
3620 gamma_node->
location[1] = link->fromnode->location[1];
3648 if (!
STREQ(node->idname,
"CompositorNodeOutputFile")) {
3668 if (!
STREQ(node->idname,
"CompositorNodeTranslate")) {
3677 if (!
bool(
data->relative)) {
3686 if (link->tonode != node) {
3711 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3713 x_relative_to_pixel_node->
location[0] = node->location[0] - node->width - 20.0f;
3714 x_relative_to_pixel_node->
location[1] = node->location[1];
3720 *x_relative_to_pixel_node,
SOCK_IN,
"Image");
3722 *x_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3724 *x_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3734 *x_relative_to_pixel_node,
3741 *x_relative_to_pixel_node,
3749 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3751 y_relative_to_pixel_node->
location[0] = node->location[0] - node->width - 20.0f;
3752 y_relative_to_pixel_node->
location[1] = node->location[1] - 20.0f;
3758 *y_relative_to_pixel_node,
SOCK_IN,
"Image");
3760 *y_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3762 *y_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3772 *y_relative_to_pixel_node,
3779 *y_relative_to_pixel_node,
3828 if (link->tonode != node) {
3838 if (!
bool(node->
custom2) || !image_link) {
3845 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3854 *x_relative_to_pixel_node,
SOCK_IN,
"Image");
3856 *x_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3858 *x_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3867 *x_relative_to_pixel_node,
3871 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3880 *y_relative_to_pixel_node,
SOCK_IN,
"Image");
3882 *y_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3884 *y_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3893 *y_relative_to_pixel_node,
3897 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3906 *width_relative_to_pixel_node,
SOCK_IN,
"Image");
3908 *width_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3910 *width_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3917 *node_tree, *width_relative_to_pixel_node, *width_value_output, *node, *width_input);
3921 *width_relative_to_pixel_node,
3922 *width_image_input);
3925 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
3934 *height_relative_to_pixel_node,
SOCK_IN,
"Image");
3936 *height_relative_to_pixel_node,
SOCK_IN,
"Float Value");
3938 *height_relative_to_pixel_node,
SOCK_OUT,
"Float Value");
3945 *node_tree, *height_relative_to_pixel_node, *height_value_output, *node, *height_input);
3949 *height_relative_to_pixel_node,
3950 *height_image_input);
3960 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
3962 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
3967 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
3973 char *old_rna_path = fcurve->
rna_path;
3975 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
3978 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
3981 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
3984 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[4].default_value");
3987 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
3988 adjust_fcurve_key_frame_values(
3989 fcurve, PROP_BOOLEAN, [&](const float value) { return 1.0f - value; });
3993 if (fcurve->rna_path != old_rna_path) {
4055 "Input Temperature",
4072 "Output Temperature",
4092 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
4094 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
4099 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
4105 char *old_rna_path = fcurve->
rna_path;
4107 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
4110 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[5].default_value");
4113 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[7].default_value");
4116 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[8].default_value");
4119 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[9].default_value");
4122 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[11].default_value");
4125 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[13].default_value");
4128 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[14].default_value");
4131 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[15].default_value");
4134 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[16].default_value");
4137 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[17].default_value");
4142 MEM_freeN(old_rna_path);
4152 if (!
STREQ(node->idname,
"CompositorNodeImageInfo")) {
4157 bNodeLink *output_texture_link =
nullptr;
4160 if (link->tonode == node) {
4164 if (link->fromnode == node &&
4167 output_texture_link = link;
4170 if (link->fromnode == node &&
4173 output_pixel_link = link;
4177 if (!output_texture_link && !output_pixel_link) {
4182 nullptr, *node_tree,
"CompositorNodeImageCoordinates");
4184 image_coordinates_node->
location[0] = node->location[0];
4185 image_coordinates_node->
location[1] = node->location[1] - node->height - 10.0f;
4189 *image_coordinates_node,
SOCK_IN,
"Image");
4193 *image_coordinates_node,
4197 if (output_texture_link) {
4199 *image_coordinates_node,
SOCK_OUT,
"Uniform");
4201 *image_coordinates_node,
4203 *output_texture_link->
tonode,
4204 *output_texture_link->
tosock);
4208 if (output_pixel_link) {
4210 *image_coordinates_node,
SOCK_OUT,
"Pixel");
4212 *image_coordinates_node,
4214 *output_pixel_link->
tonode,
4215 *output_pixel_link->
tosock);
4289 if (link->tonode != node) {
4304 nullptr, *node_tree,
"ShaderNodeVectorMath");
4314 *multiply_node,
SOCK_OUT,
"Vector");
4328 *node_tree, *size_link->
fromnode, *size_link->
fromsock, *multiply_node, *scale_input);
4330 *node_tree, *multiply_node, *vector_output, *node, *size_input);
4332 size_link = &new_link;
4336 if (!
bool(storage->
relative) || !image_link) {
4341 nullptr, *node_tree,
"CompositorNodeRelativeToPixel");
4347 switch (storage->
aspect) {
4355 relative_to_pixel_node->
custom2 =
4364 *relative_to_pixel_node,
SOCK_IN,
"Image");
4366 *relative_to_pixel_node,
SOCK_IN,
"Vector Value");
4368 *relative_to_pixel_node,
SOCK_OUT,
"Vector Value");
4373 *relative_to_pixel_node,
4379 *relative_to_pixel_node,
4398 char escaped_node_name[
sizeof(node->
name) * 2 + 1];
4400 const std::string node_rna_path = fmt::format(
"nodes[\"{}\"]", escaped_node_name);
4405 if (!blender::StringRef(fcurve->rna_path).startswith(node_rna_path)) {
4411 char *old_rna_path = fcurve->
rna_path;
4413 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
4414 fcurve->array_index = 0;
4417 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[1].default_value");
4418 fcurve->array_index = 1;
4421 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[2].default_value");
4424 fcurve->rna_path = BLI_sprintfN(
"%s.%s", node_rna_path.c_str(),
"inputs[3].default_value");
4425 adjust_fcurve_key_frame_values(
4426 fcurve, PROP_BOOLEAN, [&](const float value) { return 1.0f - value; });
4430 if (fcurve->rna_path != old_rna_path) {
4497 links_to_level_and_max_inputs.
add(link->tosock, link);
4514 *origin_node,
SOCK_IN,
"Max");
4516 !links_to_level_and_max_inputs.
contains(max_input_socket))
4527 clamp_node.
location[0] = node->location[0] - 25;
4528 clamp_node.
location[1] = node->location[1];
4530 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Value");
4532 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Min");
4534 tree, clamp_node,
SOCK_IN,
"NodeSocketFloat",
"Max");
4536 tree, clamp_node,
SOCK_OUT,
"NodeSocketFloat",
"Result");
4541 link->
tosock = &clamp_value_input;
4547 value->
value = std::clamp(value->
value, 0, 11);
4557 float old_hsv_jitter[3] = {
4626 for (ID *slot_user : slot_users) {
4627 PointerRNA slot_user_ptr = RNA_id_pointer_create(slot_user);
4630 if (!RNA_path_resolve_property(&slot_user_ptr, fcurve.rna_path, &ptr, &prop)) {
4634 blender::animrig::update_autoflags_fcurve_direct(&fcurve, RNA_property_type(prop));
5174 scene->toolsettings->snap_step_frames = toolsettings_default.
snap_step_frames;
5175 scene->toolsettings->snap_step_seconds = toolsettings_default.
snap_step_seconds;
5212 if (brush->gpencil_settings) {
5229 if (layer.name == name) {
5240 if (!old_seam_layer) {
5246 names.
add(layer.name);
5251 names.
add(layer.name);
5256 names.
add(layer.name);
5261 names.
add(layer.name);
5265 names.
add(vertex_group->name);
5280 if (
STREQ(node->idname,
"GeometryNodeCurveToMesh")) {
5281 curve_to_mesh_nodes.
add(node);
5285 for (
bNode *curve_to_mesh : curve_to_mesh_nodes) {
5306 named_attribute.storage = named_attribute_storage;
5307 named_attribute.parent = curve_to_mesh->parent;
5308 named_attribute.location[0] = curve_to_mesh->location[0] - 25;
5309 named_attribute.location[1] = curve_to_mesh->location[1];
5324 switch_node.
storage = switch_storage;
5326 switch_node.
location[0] = curve_to_mesh->location[0] - 25;
5327 switch_node.
location[1] = curve_to_mesh->location[1];
5377 if (scene->ed !=
nullptr) {
5422 if (sima->
flag & SI_NO_DRAW_TEXPAINT) {
5439 const char *workspace_name = screen->id.name + 2;
5443 if (
STREQ(workspace_name,
"UV Editing")) {
5455 if (
ELEM(brush->sculpt_brush_type,
5456 SCULPT_BRUSH_TYPE_FLATTEN,
5457 SCULPT_BRUSH_TYPE_FILL,
5458 SCULPT_BRUSH_TYPE_SCRAPE))
5460 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_FLATTEN) {
5461 brush->plane_height = 1.0f;
5462 brush->plane_depth = 1.0f;
5463 brush->area_radius_factor = 1.0f;
5467 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_FILL) {
5468 brush->plane_height = 0.0f;
5469 brush->plane_depth = 1.0f;
5475 if (brush->sculpt_brush_type == SCULPT_BRUSH_TYPE_SCRAPE) {
5476 brush->plane_height = 1.0f;
5477 brush->plane_depth = 0.0f;
5494 brush->plane_offset *= -1.0f;
5498 brush->plane_height *= brush->plane_trim;
5499 brush->plane_depth *= brush->plane_trim;
5514 if (item.
item_type == eNodeTreeInterfaceItemType::NODE_INTERFACE_SOCKET) {
5535 &arm->bonebase, [](
Bone *bone) { bone->drawtype = ARM_DRAW_TYPE_ARMATURE_DEFINED; });
5536 BLI_assert_msg(!arm->edbo,
"Armatures should not be saved in edit mode");
5574 if (
STREQ(node->idname,
"GeometryNodeStoreNamedGrid")) {
5575 switch (node->custom1) {
5627 if (node->storage !=
nullptr) {
5632 node->storage =
data;
5640 scene->grease_pencil_settings.smaa_threshold_render =
5641 scene->grease_pencil_settings.smaa_threshold;
5642 scene->grease_pencil_settings.aa_samples = 1;
5683 if (slot->name[0]) {
5689 scene->r.ppm_factor = 72.0f;
5690 scene->r.ppm_base = 0.0254f;
6024 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
6167 if (bone->parent && (bone->flag & BONE_CONNECTED)) {
6168 bone->rad_head = bone->parent->rad_tail;
6174 ebone->rad_head = ebone->parent->rad_tail;
6265 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
6298 if (scene->nodetree) {
6312 if (brush->tip_scale_x == 0.0f) {
6313 brush->tip_scale_x = 1.0f;
6367 if (nu->pntsv > 1) {
6373 cu->ob_type = ob_type;
6401 if (light->temperature == 0.0f) {
6402 light->temperature = 6500.0f;
6460 ob->soft->fuzzyness = std::max<int>(1, ob->soft->fuzzyness);
6493 if (brush->gpencil_settings) {
6507 if (lmd->
radius != 0.0f) {
6520 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
#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_OUTPUT_IGNORE_ALPHA
@ CMP_NODE_RELATIVE_TO_PIXEL_DATA_TYPE_VECTOR
@ CMP_NODE_RELATIVE_TO_PIXEL_DATA_TYPE_FLOAT
@ CMP_NODE_CORNER_PIN_INTERPOLATION_ANISOTROPIC
@ CMP_NODE_BLUR_ASPECT_NONE
@ 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
@ 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()
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)