9#define DNA_DEPRECATED_ALLOW
29#define DNA_GENFILE_VERSIONING_MACROS
55#undef DNA_GENFILE_VERSIONING_MACROS
87#include "RNA_prototypes.hh"
120 if (
min !=
nullptr) {
124 if (
max !=
nullptr) {
128 if (soft_min !=
nullptr) {
133 if (soft_max !=
nullptr) {
138 if (step !=
nullptr) {
142 if (default_value !=
nullptr) {
161 if (
min !=
nullptr) {
165 if (
max !=
nullptr) {
169 if (soft_min !=
nullptr) {
174 if (soft_max !=
nullptr) {
179 if (step !=
nullptr) {
183 if (precision !=
nullptr) {
187 if (default_value !=
nullptr) {
189 const int array_len = default_value->
len;
194 const float *old_default_array =
static_cast<const float *
>(
IDP_Array(default_value));
215 if (default_value !=
nullptr && default_value->
type ==
IDP_STRING) {
223 if (idprop_group ==
nullptr) {
228 if (ui_container ==
nullptr) {
234 if (prop_ui_data ==
nullptr) {
246 const char *subtype_string =
IDP_String(subtype);
350 if (ob->type ==
OB_ARMATURE && ob->pose !=
nullptr) {
359 if (scene->ed !=
nullptr) {
388 ID *id_prev =
nullptr;
390 if (id_prev ==
nullptr) {
415 *new_defbase =
object->defbase;
425#define SEQ_SPEED_INTEGRATE (1 << 0)
426#define SEQ_SPEED_COMPRESS_IPO_Y (1 << 2)
431 const char *substr =
nullptr;
432 float globalSpeed =
v->globalSpeed;
434 if (globalSpeed == 1.0f) {
439 v->speed_fader = globalSpeed *
440 (
float(seq->seq1->len) /
448 v->speed_fader = seq->speed_fader * globalSpeed;
451 globalSpeed *= 100.0f;
453 v->speed_fader_length = seq->speed_fader * globalSpeed;
454 substr =
"speed_length";
458 v->speed_fader_frame_number =
int(seq->speed_fader * globalSpeed);
459 substr =
"speed_frame_number";
464 if (substr || globalSpeed != 1.0f) {
466 &scene->
id, seq, &RNA_Sequence,
"speed_factor", 0,
nullptr);
468 if (globalSpeed != 1.0f) {
469 for (
int i = 0; i < fcu->
totvert; i++) {
471 bezt->
vec[0][1] *= globalSpeed;
472 bezt->
vec[1][1] *= globalSpeed;
473 bezt->
vec[2][1] *= globalSpeed;
489#undef SEQ_SPEED_INTEGRATE
490#undef SEQ_SPEED_COMPRESS_IPO_Y
505 for (
int i = 0; i < 3; i++) {
556 bmain,
"Realize Instances 2.93 Legacy",
"GeometryNodeTree");
564 group_input->
locx = -400.0f;
566 group_output->
locx = 500.0f;
570 join->
locx = group_output->
locx - 175.0f;
578 separate->
locx = join->
locx - 350.0f;
579 separate->
locy = join->
locy + 50.0f;
582 realize->
locx = separate->
locx - 200.0f;
636 char name_esc[(
sizeof(seq->
name) - 2) * 2];
638 char *path =
BLI_sprintfN(
"sequence_editor.sequences_all[\"%s\"].pitch", name_esc);
640 if (fcu !=
nullptr) {
658 const Scene *scene =
static_cast<const Scene *
>(user_data);
669 if (seq->pitch <= 0.0f) {
694 switch (storage->
mode) {
700 sample_nearest_surface->
locx = node->locx;
701 sample_nearest_surface->
locy = node->locy;
702 static auto socket_remap = []() {
704 map.
add_new(
"Attribute",
"Value");
705 map.
add_new(
"Attribute_001",
"Value");
706 map.
add_new(
"Attribute_002",
"Value");
707 map.
add_new(
"Attribute_003",
"Value");
708 map.
add_new(
"Attribute_004",
"Value");
710 map.
add_new(
"Source Position",
"Sample Position");
732 sample_index->
locx = node->locx + 25.0f;
733 sample_index->
locy = node->locy;
734 if (old_geometry_socket->
link) {
748 sample_nearest->
locx = node->locx - 25.0f;
749 sample_nearest->
locy = node->locy;
750 if (old_geometry_socket->
link) {
758 static auto sample_nearest_remap = []() {
760 map.
add_new(
"Source Position",
"Sample Position");
765 static auto sample_index_remap = []() {
767 map.
add_new(
"Attribute",
"Value");
768 map.
add_new(
"Attribute_001",
"Value");
769 map.
add_new(
"Attribute_002",
"Value");
770 map.
add_new(
"Attribute_003",
"Value");
771 map.
add_new(
"Attribute_004",
"Value");
772 map.
add_new(
"Source Position",
"Sample Position");
792 sample_storage->
clamp = 1;
794 sample_index->
locx = node->locx;
795 sample_index->
locy = node->locy;
796 const bool index_was_linked =
798 static auto socket_remap = []() {
800 map.
add_new(
"Attribute",
"Value");
801 map.
add_new(
"Attribute_001",
"Value");
802 map.
add_new(
"Attribute_002",
"Value");
803 map.
add_new(
"Attribute_003",
"Value");
804 map.
add_new(
"Attribute_004",
"Value");
805 map.
add_new(
"Source",
"Geometry");
811 if (!index_was_linked) {
814 index->parent = node->parent;
815 index->locx = node->locx - 25.0f;
816 index->locy = node->locy - 25.0f;
842 if (!
ELEM(node->type,
855 if (
STREQ(socket->name,
"UV Map")) {
856 uv_map_output_socket = socket;
859 primitive_output_socket = socket;
862 if (uv_map_output_socket !=
nullptr) {
866 ntree, *node,
SOCK_OUT,
"NodeSocketVector",
"UV Map");
869 "GeometryNodeStoreNamedAttribute");
870 new_nodes.
append(store_attribute_node);
872 store_attribute_node->
locx = node->locx + 25;
873 store_attribute_node->
locy = node->locy;
874 store_attribute_node->
offsetx = node->offsetx;
875 store_attribute_node->
offsety = node->offsety;
876 auto &storage = *MEM_cnew<NodeGeometryStoreNamedAttribute>(__func__);
877 store_attribute_node->
storage = &storage;
884 ntree, *store_attribute_node,
SOCK_IN,
"NodeSocketGeometry",
"Geometry");
886 ntree, *store_attribute_node,
SOCK_IN,
"NodeSocketString",
"Name");
888 ntree, *store_attribute_node,
SOCK_IN,
"NodeSocketVector",
"Value");
890 ntree, *store_attribute_node,
SOCK_OUT,
"NodeSocketGeometry",
"Geometry");
892 if (link->fromsock == primitive_output_socket) {
893 link->fromnode = store_attribute_node;
894 link->fromsock = &store_attribute_geometry_output;
906 *primitive_output_socket,
907 *store_attribute_node,
908 store_attribute_geometry_input);
910 ntree, *node, *uv_map_output_socket, *store_attribute_node, store_attribute_value_input);
914 for (
bNode *node : new_nodes) {
933 if (node->idname !=
StringRef(
"GeometryNodeExtrudeMesh")) {
947 in_links_per_socket.
add(link->tosock, link);
948 out_links_per_socket.
add(link->fromsock, link);
953 if (!geometry_in_link || geometry_out_links.
is_empty()) {
957 const bool versioning_already_done = [&]() {
970 capture_node,
SOCK_IN,
"Value_003");
972 if (!capture_in_link) {
978 if (geometry_out_links.
size() != 1) {
985 bNode *set_smooth_node = geometry_out_link->
tonode;
987 set_smooth_node,
SOCK_IN,
"Shade Smooth");
989 if (!connecting_link) {
992 if (connecting_link->
fromnode != capture_node) {
997 if (versioning_already_done) {
1003 capture_node.
locx = node->locx - 25;
1004 capture_node.
locy = node->locy;
1005 new_nodes.
append(&capture_node);
1006 auto *capture_node_storage = MEM_cnew<NodeGeometryAttributeCapture>(__func__);
1007 capture_node.
storage = capture_node_storage;
1011 ntree, capture_node,
SOCK_IN,
"NodeSocketGeometry",
"Geometry");
1013 ntree, capture_node,
SOCK_OUT,
"NodeSocketGeometry",
"Geometry");
1015 ntree, capture_node,
SOCK_IN,
"NodeSocketBool",
"Value_003");
1017 ntree, capture_node,
SOCK_OUT,
"NodeSocketBool",
"Attribute_003");
1021 is_smooth_node.
locx = capture_node.
locx - 25;
1022 is_smooth_node.
locy = capture_node.
locy;
1024 ntree, is_smooth_node,
SOCK_OUT,
"NodeSocketBool",
"Smooth");
1025 new_nodes.
append(&is_smooth_node);
1027 ntree, is_smooth_node, is_smooth_out, capture_node, capture_node_value_in);
1029 geometry_in_link->
tonode = &capture_node;
1030 geometry_in_link->
tosock = &capture_node_geo_in;
1035 set_smooth_node.
locx = node->locx + 25;
1036 set_smooth_node.
locy = node->locy;
1037 new_nodes.
append(&set_smooth_node);
1039 ntree, set_smooth_node,
SOCK_IN,
"NodeSocketGeometry",
"Geometry");
1041 ntree, set_smooth_node,
SOCK_OUT,
"NodeSocketGeometry",
"Geometry");
1043 ntree, set_smooth_node,
SOCK_IN,
"NodeSocketBool",
"Shade Smooth");
1046 ntree, *node, *geometry_out_socket, set_smooth_node, set_smooth_node_geo_in);
1048 for (
bNodeLink *link : geometry_out_links) {
1049 link->fromnode = &set_smooth_node;
1050 link->fromsock = &set_smooth_node_geo_out;
1054 capture_node_attribute_out,
1056 set_smooth_node_smooth_in);
1060 for (
bNode *node : new_nodes) {
1077 if (adt ==
nullptr || adt->
action ==
nullptr ||
1095 if (text->id.us == 0) {
1116 if (scene->ed !=
nullptr) {
1130 if (imapaint->
canvas !=
nullptr &&
1133 imapaint->
canvas =
nullptr;
1135 if (imapaint->
stencil !=
nullptr &&
1140 if (imapaint->
clone !=
nullptr &&
1143 imapaint->
clone =
nullptr;
1148 if (brush->clone.image !=
nullptr &&
1151 brush->clone.image =
nullptr;
1177 if (
STREQ(link->tosock->identifier,
"Switch")) {
1178 bNode *to_node = link->tonode;
1188 link->tosock = link->tosock->next;
1211 bNodeTree *realize_instances_node_tree =
nullptr;
1217 if (md->next ==
nullptr) {
1232 if (realize_instances_node_tree ==
nullptr) {
1235 new_nmd->
node_group = realize_instances_node_tree;
1258 if (adt ==
nullptr) {
1273 sizeof(dvar->name));
1297 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
1308 if (timeline_region ==
nullptr) {
1322 if (
ed ==
nullptr) {
1345 const bool is_first_space = sl == area->spacedata.first;
1346 ListBase *regionbase = is_first_space ? &area->regionbase : &sl->regionbase;
1348 if (region ==
nullptr) {
1388 if (socket == node->inputs.first) {
1391 STRNCPY(socket->name, socket->name[0] ==
'A' ?
"False" :
"True");
1394 char number_suffix[8];
1395 STRNCPY(number_suffix, socket->identifier + 1);
1397 socket->identifier,
sizeof(socket->identifier), socket->name, number_suffix);
1408 char *old_path = *p_old_path;
1410 if (old_path ==
nullptr) {
1414 int len = strlen(old_path);
1419 old_path[
len - 1] =
'z';
1428 int index = (old_path[
len - 1] ==
'y' ? 2 : 0);
1430 old_path[
len - 1] = 0;
1465 if (bone->flag & BONE_ADD_PARENT_END_ROLL) {
1469 copy_v3_fl3(bone->scale_in, bone->scale_in_x, 1.0f, bone->scale_in_z);
1470 copy_v3_fl3(bone->scale_out, bone->scale_out_x, 1.0f, bone->scale_out_z);
1482 if (
data->points ==
nullptr) {
1483 data->numpoints = 0;
1494 const float old_value = socket_value->
value;
1511 if (
seq->strip->transform !=
nullptr) {
1520 if (
seq->strip->transform !=
nullptr) {
1556 if (strstr(property->name,
"_use_attribute") || strstr(property->name,
"_attribute_name")) {
1566 if (strstr(property->name,
"_use_attribute") || strstr(property->name,
"_attribute_name")) {
1571 SNPRINTF(use_attribute_prop_name,
"%s%s", property->name,
"_use_attribute");
1577 SNPRINTF(attribute_name_prop_name,
"%s%s", property->name,
"_attribute_name");
1589 const float SAFE_THRESHOLD = 1.0e-5f;
1590 const float CRITICAL_THRESHOLD = 1.0e-9f;
1591 const float THRESHOLD_SQUARED = CRITICAL_THRESHOLD * CRITICAL_THRESHOLD;
1593 const float x =
nor[0];
1594 const float y =
nor[1];
1595 const float z =
nor[2];
1597 const float theta = 1.0f +
y;
1598 const float theta_alt =
x *
x +
z *
z;
1599 float rMatrix[3][3], bMatrix[3][3];
1608 if (theta > SAFE_THRESHOLD || (theta > CRITICAL_THRESHOLD && theta_alt > THRESHOLD_SQUARED)) {
1617 if (theta > SAFE_THRESHOLD) {
1619 bMatrix[0][0] = 1 -
x *
x / theta;
1620 bMatrix[2][2] = 1 -
z *
z / theta;
1621 bMatrix[2][0] = bMatrix[0][2] = -
x *
z / theta;
1625 bMatrix[0][0] = (
x +
z) * (
x -
z) / -theta_alt;
1626 bMatrix[2][2] = -bMatrix[0][0];
1627 bMatrix[2][0] = bMatrix[0][2] = 2.0f *
x *
z / theta_alt;
1633 bMatrix[0][0] = bMatrix[1][1] = -1.0;
1644 const float tail[3],
1645 const float check_x_axis[3],
1646 const float check_y_axis[3],
1649 const float SAFE_THRESHOLD = 1.0e-5f;
1650 float vec[3], bone_mat[3][3], vec2[3];
1657 if (1.0f + vec[1] < SAFE_THRESHOLD * 2 && (vec[0] || vec[2])) {
1666 if (
dot_v3v3(bone_mat[0], check_x_axis) < 0.999f) {
1681 bone->head, bone->tail, bone->bone_mat[0], bone->bone_mat[1], &bone->roll);
1685 bone->arm_head, bone->arm_tail, bone->arm_mat[0], bone->arm_mat[1], &bone->arm_roll);
1718 if (!
STREQ(link->tosock->identifier,
"Position")) {
1725 const bool offset_enabled =
1727 if (offset_enabled) {
1729 link->tosock = old_offset_socket->
next;
1757 seq->startofs -=
seq->startstill;
1758 seq->endofs -=
seq->endstill;
1759 seq->startstill = 0;
1772 if ((
seq->len == 1) &&
1787 seq->speed_factor = 1.0f;
1791 if (
seq->startofs < 0) {
1792 seq->startofs = 0.0f;
1817 opop->subitem_local_name,
1819 opop->subitem_local_index));
1820 bConstraint *constraint_src = constraint_anchor !=
nullptr ?
1821 constraint_anchor->
next :
1824 if (constraint_src ==
nullptr) {
1826 CLOG_ERROR(&
LOG,
"Could not find source constraint in stored override data");
1831 opop->subitem_reference_name = opop->subitem_local_name;
1833 opop->subitem_reference_index = opop->subitem_local_index;
1834 opop->subitem_local_index++;
1844 if (op !=
nullptr) {
1851 opop->subitem_local_name,
1853 opop->subitem_local_index));
1858 if (mod_src ==
nullptr) {
1860 CLOG_ERROR(&
LOG,
"Could not find source modifier in stored override data");
1865 opop->subitem_reference_name = opop->subitem_local_name;
1867 opop->subitem_reference_index = opop->subitem_local_index;
1868 opop->subitem_local_index++;
1873 if (op !=
nullptr) {
1880 opop->subitem_local_name,
1882 opop->subitem_local_index));
1884 gp_mod_anchor->
next :
1886 object->greasepencil_modifiers.first);
1888 if (gp_mod_src ==
nullptr) {
1890 CLOG_ERROR(&
LOG,
"Could not find source GP modifier in stored override data");
1895 opop->subitem_reference_name = opop->subitem_local_name;
1897 opop->subitem_reference_index = opop->subitem_local_index;
1898 opop->subitem_local_index++;
1903 if (op !=
nullptr) {
1907 if (
object->pose !=
nullptr) {
1909 char rna_path[26 + (
sizeof(pchan->name) * 2) + 1];
1910 char name_esc[
sizeof(pchan->name) * 2];
1912 SNPRINTF(rna_path,
"pose.bones[\"%s\"].constraints", name_esc);
1914 if (op !=
nullptr) {
1924 if (anim_data ==
nullptr) {
1932 if (op !=
nullptr) {
1941 opop->subitem_reference_name = opop->subitem_local_name;
1942 opop->subitem_local_name =
nullptr;
1943 opop->subitem_reference_index = opop->subitem_local_index;
1944 opop->subitem_local_index++;
1964 switch (node->type) {
1970 STRNCPY(node->idname,
"FunctionNodeCombineColor");
1971 node->storage = storage;
1979 STRNCPY(node->idname,
"FunctionNodeSeparateColor");
1980 node->storage = storage;
2031 switch (node->type) {
2037 STRNCPY(node->idname,
"CompositorNodeCombineColor");
2038 node->storage = storage;
2046 STRNCPY(node->idname,
"CompositorNodeCombineColor");
2047 node->storage = storage;
2056 STRNCPY(node->idname,
"CompositorNodeCombineColor");
2057 node->storage = storage;
2065 STRNCPY(node->idname,
"CompositorNodeCombineColor");
2066 node->storage = storage;
2074 STRNCPY(node->idname,
"CompositorNodeSeparateColor");
2075 node->storage = storage;
2083 STRNCPY(node->idname,
"CompositorNodeSeparateColor");
2084 node->storage = storage;
2093 STRNCPY(node->idname,
"CompositorNodeSeparateColor");
2094 node->storage = storage;
2102 STRNCPY(node->idname,
"CompositorNodeSeparateColor");
2103 node->storage = storage;
2113 switch (node->type) {
2117 STRNCPY(node->idname,
"TextureNodeCombineColor");
2123 STRNCPY(node->idname,
"TextureNodeSeparateColor");
2151 switch (node->type) {
2157 STRNCPY(node->idname,
"ShaderNodeCombineColor");
2158 node->storage = storage;
2166 STRNCPY(node->idname,
"ShaderNodeCombineColor");
2167 node->storage = storage;
2175 STRNCPY(node->idname,
"ShaderNodeSeparateColor");
2176 node->storage = storage;
2184 STRNCPY(node->idname,
"ShaderNodeSeparateColor");
2185 node->storage = storage;
2201 STRNCPY(node->idname,
"ShaderNodeMix");
2204 data->blend_type = node->custom1;
2206 data->clamp_factor = 1;
2209 node->storage =
data;
2219 if (
format->view_settings.curve_mapping) {
2221 if (
format != &scene->r.im_format &&
ELEM(
format->view_settings.curve_mapping,
2222 scene->view_settings.curve_mapping,
2223 scene->r.im_format.view_settings.curve_mapping))
2226 format->view_settings.curve_mapping);
2232 if (
format->view_settings.curve_mapping->cm[0].curve ==
nullptr) {
2234 format->view_settings.curve_mapping =
nullptr;
2267 "versioning: tool props region for file",
2301 "versioning: channels region for sequencer",
2306 "versioning: preview region for sequencer",
2320 const char *parent_rna_path,
2328 char name_esc_strip[
sizeof(strip->
name) * 2];
2331 const std::string rna_path_strip = std::string(parent_rna_path) +
".strips[\"" + name_esc_strip +
2335 const std::string rna_path_prop = rna_path_strip +
".frame_start";
2337 liboverride, rna_path_prop.c_str(), (rna_path_prop +
"_raw").c_str());
2341 const std::string rna_path_prop = rna_path_strip +
".frame_end";
2343 liboverride, rna_path_prop.c_str(), (rna_path_prop +
"_raw").c_str());
2347 const std::string rna_path_prop = rna_path_strip +
".frame_start_ui";
2352 const std::string rna_path_prop = rna_path_strip +
".frame_end_ui";
2372 char *rna_path_track =
BLI_sprintfN(
"animation_data.nla_tracks[%d]", track_index);
2387 enum { SCE_SNAP_SEQ = (1 << 7) };
2391 if (!DNA_struct_member_exists(fd->
filesdna,
"MirrorModifierData",
"float",
"bisect_threshold"))
2404 if (!DNA_struct_member_exists(fd->
filesdna,
"BrushGpencilSettings",
"int",
"dilate_pixels")) {
2406 if (brush->gpencil_settings) {
2407 brush->gpencil_settings->dilate_pixels = 1;
2416 if (!DNA_struct_member_exists(fd->
filesdna,
"bPoseChannel",
"float",
"custom_scale_xyz[3]")) {
2418 if (ob->pose ==
nullptr) {
2422 copy_v3_fl(pchan->custom_scale_xyz, pchan->custom_scale);
2434 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2438 if (new_sidebar !=
nullptr) {
2466 if (!DNA_struct_member_exists(fd->
filesdna,
"FileAssetSelectParams",
"short",
"import_method"))
2483 if (!DNA_struct_member_exists(fd->
filesdna,
"Bone",
"int",
"bbone_flag")) {
2492 copy_v3_fl3(pchan->scale_in, pchan->scale_in_x, 1.0f, pchan->scale_in_z);
2493 copy_v3_fl3(pchan->scale_out, pchan->scale_out_x, 1.0f, pchan->scale_out_z);
2519 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2524 if (spreadsheet_dataset_region) {
2551 tool_settings->
snap_flag |= SCE_SNAP_SEQ;
2552 short snap_mode = tool_settings->
snap_mode;
2555 tool_settings->
snap_mode &= ~((1 << 4) | (1 << 5) | (1 << 6));
2558 if (snap_mode & (1 << 4)) {
2561 if (snap_mode & (1 << 5)) {
2564 if (snap_mode & (1 << 6)) {
2567 if (snap_node_mode & (1 << 5)) {
2570 if (snap_node_mode & (1 << 6)) {
2573 if (snap_uv_mode & (1 << 4)) {
2586 if (scene->master_collection !=
nullptr) {
2587 BLI_strncpy(scene->master_collection->id.name + 2,
2589 sizeof(scene->master_collection->id.name) - 2);
2606 STRNCPY(node->idname,
"GeometryNodeMeshSubdivide");
2624 mat->lineart.mat_occlusion = 1;
2631 if (!DNA_struct_member_exists(
2632 fd->
filesdna,
"SurfaceDeformModifierData",
"int",
"mesh_verts_num"))
2659 if (!DNA_struct_member_exists(
2660 fd->
filesdna,
"WorkSpace",
"AssetLibraryReference",
"asset_library"))
2667 if (!DNA_struct_member_exists(
2668 fd->
filesdna,
"FileAssetSelectParams",
"AssetLibraryReference",
"asset_library_ref"))
2695 tool_settings->
snap_flag &= ~SCE_SNAP_SEQ;
2719 if (!DNA_struct_member_exists(
2720 fd->
filesdna,
"View3DOverlay",
"float",
"normals_constant_screen_size"))
2781 object->visibility_flag |=
flag;
2786 if (!DNA_struct_member_exists(
2787 fd->
filesdna,
"WorkSpace",
"AssetLibraryReference",
"asset_library_ref"))
2794 if (!DNA_struct_member_exists(
2795 fd->
filesdna,
"FileAssetSelectParams",
"AssetLibraryReference",
"asset_library_ref"))
2853 bNode *node = link->tonode;
2854 if (
STREQ(link->tosock->identifier,
"Size") && link->tosock->type ==
SOCK_FLOAT) {
2855 bNode *link_fromnode = link->fromnode;
2861 ntree, node, socket);
2872 if (
STREQ(socket->identifier,
"Size") && (socket->type ==
SOCK_FLOAT)) {
2882 if (!DNA_struct_member_exists(
2883 fd->
filesdna,
"LineartGpencilModifierData",
"bool",
"use_crease_on_smooth"))
2928 seq_show_safe_center | seq_show_metadata);
2930 seq_show_strip_source | seq_show_strip_duration |
2931 seq_show_grid | show_strip_offset);
2943 if (scene->ed !=
nullptr) {
2962 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
2966 region->v2d.min[1] = 4.0f;
2986 R_EXR_TILE_FILE = (1 << 10),
2987 R_FULL_SAMPLE = (1 << 15),
2990 scene->r.scemode &= ~(R_EXR_TILE_FILE | R_FULL_SAMPLE);
3024 switch (sl->spacetype) {
3050 switch (sl->spacetype) {
3052 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3072 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3074 ARegion *region_tool =
nullptr, *region_head =
nullptr;
3075 int region_tool_index = -1, region_head_index = -1, i;
3078 region_tool = region;
3079 region_tool_index = i;
3082 region_head = region;
3083 region_head_index = i;
3086 if ((region_tool && region_head) && (region_head_index > region_tool_index)) {
3095 if (scene->ed !=
nullptr) {
3114 if (scene->ed !=
nullptr) {
3125 switch (sl->spacetype) {
3128 enum { SEQ_DRAW_SEQUENCE = 0 };
3129 if (sseq->
mainb == SEQ_DRAW_SEQUENCE) {
3175 if (!DNA_struct_exists(fd->
filesdna,
"SpaceNodeOverlay")) {
3208 wm->xr.session_settings.base_scale = 1.0f;
3232 if (node->storage ==
nullptr) {
3236 node->storage =
data;
3292 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3296 region->v2d.min[1] = 1.0f;
3309 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3313 if (region->v2d.minzoom > 0.05f) {
3314 region->v2d.minzoom = 0.05f;
3357 if (node->storage ==
nullptr) {
3361 data->operation = node->custom1;
3362 STRNCPY(node->idname,
"FunctionNodeCompare");
3363 node->storage =
data;
3387 if (node->storage ==
nullptr) {
3389 data->clamp = node->custom1;
3391 data->interpolation_type = node->custom2;
3392 node->storage =
data;
3404 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3432 if (!DNA_struct_member_exists(fd->
filesdna,
"View3DOverlay",
"float",
"bone_wire_alpha")) {
3478 if (scene->ed !=
nullptr) {
3488 ~(short(
SCE_SNAP) | short(SCE_SNAP_SEQ));
3489 if (tool_settings->
snap_flag & SCE_SNAP_SEQ) {
3491 tool_settings->
snap_flag &= ~SCE_SNAP_SEQ;
3539 if (gpmd->
step == 1 && gpmd->
factor <= 0.5f) {
3545 gpmd->
step + 2.0f)));
3568 for (
int step = 0; step < 2; step++) {
3583 actlayer = me->vert_data.layers + vact1;
3585 else if (vact2 != -1) {
3586 actlayer = me->corner_data.layers + vact2;
3628 if (brush->curves_sculpt_settings !=
nullptr) {
3631 brush->curves_sculpt_settings = MEM_cnew<BrushCurvesSculptSettings>(__func__);
3632 brush->curves_sculpt_settings->add_amount = 1;
3659 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
3674 if (timeline_region !=
nullptr) {
3684 if (
ed ==
nullptr) {
3690 ed->displayed_channels = &
ed->channels;
3694 ms->old_channels = previous_channels;
3695 previous_channels = &ms->parseq->channels;
3697 ed->displayed_channels = &ms->parseq->channels;
3733 for (
int step = 0; step < 2; step++) {
3748 actlayer = me->vert_data.layers + vact1;
3750 else if (vact2 != -1) {
3751 actlayer = me->corner_data.layers + vact2;
3803 if (node->storage ==
nullptr) {
3806 node->storage =
data;
3837 if (settings ==
nullptr) {
3846 if (!DNA_struct_member_exists(fd->
filesdna,
"Sculpt",
"float",
"automasking_cavity_factor")) {
3848 if (scene->toolsettings && scene->toolsettings->sculpt) {
3849 scene->toolsettings->sculpt->automasking_cavity_factor = 0.5f;
3857 scene->r.bake.max_ray_distance =
safe_sqrtf(scene->r.bake.max_ray_distance);
3872 if (brush->curves_sculpt_settings->points_per_curve == 0) {
3873 brush->curves_sculpt_settings->points_per_curve = 8;
3878 if (!DNA_struct_member_exists(fd->
filesdna,
"ImagePackedFile",
"int",
"tile_number")) {
3883 imapf->tile_number = 1001;
3891 if (
ed !=
nullptr) {
3936 ((
SpaceClip *)sl)->mask_info.blend_factor = 1.0;
3975 if (sock->storage) {
3981 if (node->storage) {
4005 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
4009 if (channels_region) {
4023 brush->curves_sculpt_settings->density_add_attempts = 100;
4039 if (!DNA_struct_member_exists(fd->
filesdna,
"ImageTile",
"int",
"gen_x")) {
4042 tile->gen_x = ima->gen_x;
4043 tile->gen_y = ima->gen_y;
4044 tile->gen_type = ima->gen_type;
4045 tile->gen_flag = ima->gen_flag;
4046 tile->gen_depth = ima->gen_depth;
4062 for (
int i = 0; i <
mesh->faces_num; i++) {
4063 face_sets[i] =
abs(face_sets[i]);
4072 switch (sl->spacetype) {
4088 brush->automasking_cavity_factor = 0.5f;
4124 brush->automasking_cavity_factor = 1.0f;
4134 ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
4174 const float frame_center_x =
float(clip->lastsize[0]) / 2;
4175 const float frame_center_y =
float(clip->lastsize[1]) / 2;
4194 if (!DNA_struct_member_exists(fd->
filesdna,
"Image",
"short",
"seam_margin")) {
4196 image->seam_margin = 8;
4223 light->radius = light->area_size;
4227 if (!DNA_struct_member_exists(
4228 fd->
filesdna,
"BuildGpencilModifierData",
"float",
"speed_fac") ||
4229 !DNA_struct_member_exists(
4230 fd->
filesdna,
"BuildGpencilModifierData",
"float",
"speed_maxgap"))
4245 const int CV_SCULPT_SELECTION_ENABLED = (1 << 1);
4247 curves_id->flag &= ~CV_SCULPT_SELECTION_ENABLED;
4257 bool after_armature =
false;
4269 after_armature =
false;
4273 after_armature =
true;
4281 after_armature =
false;
4297 node->custom2 =
true;
4323 if (!DNA_struct_member_exists(fd->
filesdna,
"SceneEEVEE",
"int",
"shadow_pool_size")) {
4326 scene->eevee.shadow_pool_size = 512;
4345 if (
ed !=
nullptr) {
4352 if (brush->curves_sculpt_settings->curve_parameter_falloff ==
nullptr) {
4354 1, 0.0f, 0.0f, 1.0f, 1.0f);
4362 if (!DNA_struct_member_exists(fd->
filesdna,
"View3DOverlay",
"float",
"retopology_offset")) {
4379 if (
ed !=
nullptr) {
4401 const ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
4422 const char *tool_replace_table[][2] = {
4423 {
"selection_paint",
"Paint Selection"},
4425 {
"delete",
"Delete"},
4426 {
"density",
"Density"},
4428 {
"snake_hook",
"Snake Hook"},
4429 {
"grow_shrink",
"Grow / Shrink"},
4473 if (
ed !=
nullptr) {
4492 if (ob->type !=
OB_ARMATURE || ob->pose ==
nullptr) {
4495 bPose *pose = ob->pose;
4507 short snap_mode_geom = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 4) | (1 << 5);
4508 scene->toolsettings->snap_mode_tools = snap_mode_geom;
4509 scene->toolsettings->plane_axis = 2;
4521 const ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase :
4548 scene->toolsettings->uvcalc_iterations = 10;
4549 scene->toolsettings->uvcalc_weight_factor = 1.0f;
4550 STRNCPY(scene->toolsettings->uvcalc_weight_group,
"uv_importance");
Blender kernel action and pose functionality.
void BKE_action_groups_reconstruct(bAction *act)
void BKE_animdata_main_cb(struct Main *bmain, blender::FunctionRef< void(ID *, AnimData *)> func)
AnimData * BKE_animdata_from_id(const ID *id)
void vec_roll_to_mat3(const float vec[3], float roll, float r_mat[3][3])
void mat3_to_vec_roll(const float mat[3][3], float r_vec[3], float *r_roll)
void BKE_asset_library_reference_init_default(AssetLibraryReference *library_ref)
void BKE_id_attributes_default_color_set(struct ID *id, const char *name)
void BKE_id_attributes_active_color_set(struct ID *id, const char *name)
bool BKE_attribute_rename(AttributeOwner &owner, const char *old_name, const char *new_name, struct ReportList *reports)
#define BKE_SCENE_COLLECTION_NAME
void BKE_nurb_knot_calc_u(Nurb *nu)
void BKE_nurb_knot_calc_v(Nurb *nu)
Low-level operations for curves.
CustomData interface, see also DNA_customdata_types.h.
const void * CustomData_get_layer(const CustomData *data, eCustomDataType type)
int CustomData_get_active_layer_index(const CustomData *data, eCustomDataType type)
int CustomData_get_render_layer_index(const CustomData *data, eCustomDataType type)
@ DT_MULTILAYER_INDEX_MAX
void BKE_fmodifier_name_set(FModifier *fcm, const char *name)
FCurve * BKE_fcurve_find(ListBase *list, const char rna_path[], int array_index)
FCurve * id_data_find_fcurve(ID *id, void *data, StructRNA *type, const char *prop_name, int index, bool *r_driven)
#define DRIVER_TARGETS_LOOPER_BEGIN(dvar)
#define DRIVER_TARGETS_LOOPER_END
void IDP_FreeFromGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
float IDP_coerce_to_float_or_zero(const IDProperty *prop)
eIDPropertyUIDataType IDP_ui_data_type(const IDProperty *prop)
bool IDP_ui_data_supported(const IDProperty *prop)
IDProperty * IDP_GetPropertyFromGroup(const IDProperty *prop, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
@ IDP_UI_DATA_TYPE_BOOLEAN
@ IDP_UI_DATA_TYPE_UNSUPPORTED
@ IDP_UI_DATA_TYPE_STRING
int IDP_coerce_to_int_or_zero(const IDProperty *prop)
double IDP_coerce_to_double_or_zero(const IDProperty *prop)
bool IDP_AddToGroup(IDProperty *group, IDProperty *prop) ATTR_NONNULL()
IDProperty * IDP_GetProperties(ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
IDPropertyUIData * IDP_ui_data_ensure(IDProperty *prop)
void BKE_image_ensure_tile_token(char *filepath, size_t filepath_maxncpy)
void BKE_main_id_repair_duplicate_names_listbase(Main *bmain, ListBase *lb)
void id_sort_by_name(ListBase *lb, ID *id, ID *id_sorting_hint)
void id_fake_user_set(ID *id)
bool BKE_lib_override_library_property_rna_path_change(IDOverrideLibrary *liboverride, const char *old_rna_path, const char *new_rna_path)
void BKE_lib_override_library_property_operation_delete(IDOverrideLibraryProperty *liboverride_property, IDOverrideLibraryPropertyOperation *liboverride_property_operation)
IDOverrideLibraryProperty * BKE_lib_override_library_property_find(IDOverrideLibrary *liboverride, const char *rna_path)
bool BKE_lib_override_library_property_search_and_delete(IDOverrideLibrary *liboverride, const char *rna_path)
bool BKE_lib_override_library_is_user_edited(const ID *id)
#define FOREACH_MAIN_ID_END
ListBase * which_libbase(Main *bmain, short type)
#define MAIN_VERSION_FILE_ATLEAST(main, ver, subver)
#define FOREACH_MAIN_LISTBASE_END
#define FOREACH_MAIN_LISTBASE_BEGIN(_bmain, _lb)
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
bool BKE_main_namemap_validate_and_fix(Main *bmain) ATTR_NONNULL()
void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md)
ModifierData * BKE_modifier_new(int type)
bool BKE_nlatrack_has_strips(ListBase *tracks)
#define GEO_NODE_SET_POSITION
#define GEO_NODE_MERGE_BY_DISTANCE
#define GEO_NODE_TRIANGULATE
#define SH_NODE_COMBINE_COLOR
#define GEO_NODE_SET_CURVE_HANDLES
#define GEO_NODE_MESH_PRIMITIVE_ICO_SPHERE
#define GEO_NODE_SUBDIVISION_SURFACE
#define SH_NODE_MIX_RGB_LEGACY
#define SH_NODE_COMBRGB_LEGACY
#define GEO_NODE_CURVE_SPLINE_PARAMETER
#define CMP_NODE_SEPHSVA_LEGACY
#define GEO_NODE_MESH_PRIMITIVE_CIRCLE
#define GEO_NODE_SAMPLE_NEAREST_SURFACE
#define GEO_NODE_SEPARATE_COMPONENTS
#define GEO_NODE_POINTS_TO_VERTICES
#define GEO_NODE_BOUNDING_BOX
#define GEO_NODE_SUBDIVIDE_MESH
#define CMP_NODE_COMBYCCA_LEGACY
#define SH_NODE_BSDF_PRINCIPLED
#define CMP_NODE_SEPRGBA_LEGACY
#define CMP_NODE_SEPARATE_COLOR
#define GEO_NODE_SET_POINT_RADIUS
#define GEO_NODE_SET_CURVE_TILT
#define SH_NODE_SEPARATE_COLOR
#define SH_NODE_SUBSURFACE_SCATTERING
#define GEO_NODE_OFFSET_POINT_IN_CURVE
#define SH_NODE_MAP_RANGE
#define TEX_NODE_DECOMPOSE_LEGACY
#define GEO_NODE_INPUT_MESH_ISLAND
#define GEO_NODE_MESH_PRIMITIVE_CUBE
#define GEO_NODE_DISTRIBUTE_POINTS_ON_FACES
#define SH_NODE_SEPRGB_LEGACY
#define CMP_NODE_COMBYUVA_LEGACY
#define GEO_NODE_MESH_PRIMITIVE_CONE
#define GEO_NODE_REPLACE_MATERIAL
#define GEO_NODE_REVERSE_CURVE
#define GEO_NODE_MESH_BOOLEAN
#define CMP_NODE_SEPYUVA_LEGACY
#define TEX_NODE_COMBINE_COLOR
#define CMP_NODE_COMBHSVA_LEGACY
#define FN_NODE_COMBINE_COLOR
#define GEO_NODE_TRANSLATE_INSTANCES
#define TEX_NODE_SEPARATE_COLOR
#define GEO_NODE_MESH_PRIMITIVE_LINE
#define NODE_GROUP_OUTPUT
#define GEO_NODE_TRIM_CURVE
#define SH_NODE_SEPHSV_LEGACY
#define TEX_NODE_COMPOSE_LEGACY
#define CMP_NODE_LENSDIST
#define GEO_NODE_FILLET_CURVE
#define GEO_NODE_MESH_PRIMITIVE_CYLINDER
#define GEO_NODE_CURVE_SPLINE_TYPE
#define GEO_NODE_MESH_PRIMITIVE_UV_SPHERE
#define GEO_NODE_SUBDIVIDE_CURVE
#define GEO_NODE_MESH_PRIMITIVE_GRID
#define GEO_NODE_SPLIT_EDGES
#define CMP_NODE_OUTPUT_FILE
#define FOREACH_NODETREE_END
#define GEO_NODE_ROTATE_INSTANCES
#define GEO_NODE_INPUT_MESH_EDGE_ANGLE
#define GEO_NODE_REALIZE_INSTANCES
#define GEO_NODE_RESAMPLE_CURVE
#define GEO_NODE_INPUT_INDEX
#define GEO_NODE_SAMPLE_CURVE
#define CMP_NODE_COMBINE_COLOR
#define CMP_NODE_COMBRGBA_LEGACY
#define GEO_NODE_CAPTURE_ATTRIBUTE
#define FN_NODE_SEPARATE_COLOR
#define GEO_NODE_FILL_CURVE
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
#define GEO_NODE_CURVE_LENGTH
#define GEO_NODE_CURVE_TO_MESH
#define GEO_NODE_STRING_TO_CURVES
#define GEO_NODE_POINTS_TO_VOLUME
#define GEO_NODE_SAMPLE_INDEX
#define CMP_NODE_SEPYCCA_LEGACY
#define GEO_NODE_COLLECTION_INFO
#define GEO_NODE_TRANSFER_ATTRIBUTE_DEPRECATED
#define SH_NODE_COMBHSV_LEGACY
#define GEO_NODE_SET_MATERIAL
#define GEO_NODE_SCALE_INSTANCES
#define GEO_NODE_SET_CURVE_RADIUS
#define GEO_NODE_CONVEX_HULL
#define GEO_NODE_JOIN_GEOMETRY
#define GEO_NODE_SAMPLE_NEAREST
#define FN_NODE_SLICE_STRING
ARegion * BKE_region_find_in_listbase_by_type(const ListBase *regionbase, const int region_type)
void void BKE_workspace_tool_id_replace_table(WorkSpace *workspace, const int space_type, const int mode, const char *idname_prefix_skip, const char *replace_table[][2], int replace_table_num) ATTR_NONNULL(1
#define BLI_assert_unreachable()
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
void void void BLI_movelisttolist(struct ListBase *dst, struct ListBase *src) ATTR_NONNULL(1
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void * BLI_listbase_string_or_index_find(const struct ListBase *listbase, const char *string, size_t string_offset, int index) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_listbase_swaplinks(struct ListBase *listbase, void *vlinka, void *vlinkb) ATTR_NONNULL(1
MINLINE float max_ff(float a, float b)
MINLINE float min_ff(float a, float b)
#define BLI_ASSERT_UNIT_V3(v)
MINLINE float safe_sqrtf(float a)
void unit_m3(float m[3][3])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void axis_angle_normalized_to_mat3(float R[3][3], const float axis[3], float angle)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], float limit) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE float normalize_v3(float n[3])
bool BLI_path_extension_check(const char *path, const char *ext) ATTR_NONNULL(1
char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
int char char int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
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
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
void BLI_uniquename(const struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_maxncpy) ATTR_NONNULL(1
#define BLI_string_join(...)
char * BLI_string_replaceN(const char *__restrict str, const char *__restrict substr_old, const char *__restrict substr_new) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
#define UNUSED_VARS_NDEBUG(...)
external readfile function prototypes.
typedef double(DMatrix)[4][4]
#define CLOG_ERROR(clg_ref,...)
@ LIBOVERRIDE_FLAG_SYSTEM_DEFINED
@ LIBOVERRIDE_OP_INSERT_AFTER
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_LINKED(_id)
@ ITASC_TRANSLATE_ROOT_BONES
@ TIME_CACHE_SIMULATION_NODES
@ NLASTRIP_EXTEND_HOLD_FORWARD
@ BBONE_ADD_PARENT_END_ROLL
@ SCULPT_BRUSH_TYPE_SMEAR
Object groups, one object can be in many groups at once.
@ COLORMANAGE_VIEW_USE_CURVES
@ CONSTRAINT_TYPE_SPLINEIK
blenloader genfile private function prototypes
@ eGpencilModifierType_Lineart
@ eGpencilModifierType_Smooth
@ eGpencilModifierType_Build
@ MOD_LINEART_USE_CREASE_ON_SMOOTH_SURFACES
These structs are the foundation for all linked lists in the library system.
@ LRT_MATERIAL_CUSTOM_OCCLUSION_EFFECTIVENESS
@ MOD_WVG_PROXIMITY_WEIGHTS_NORMALIZE
@ MOD_WVG_PROXIMITY_INVERT_VGROUP_MASK
@ eModifierType_MeshDeform
@ eModifierType_WeightVGProximity
@ eModifierType_DataTransfer
@ eModifierType_SurfaceDeform
@ NODE_INTERFACE_SOCKET_OUTPUT
@ NODE_INTERFACE_SOCKET_INPUT
@ CMP_NODE_COMBSEP_COLOR_YCC
@ CMP_NODE_COMBSEP_COLOR_YUV
@ CMP_NODE_COMBSEP_COLOR_RGB
@ CMP_NODE_COMBSEP_COLOR_HSV
@ SHD_SUBSURFACE_RANDOM_WALK_SKIN
@ SHD_SUBSURFACE_RANDOM_WALK
@ GEO_NODE_EXTRUDE_MESH_EDGES
@ GEO_NODE_MERGE_BY_DISTANCE_MODE_ALL
@ GEO_NODE_ATTRIBUTE_TRANSFER_NEAREST_FACE_INTERPOLATED
@ GEO_NODE_ATTRIBUTE_TRANSFER_INDEX
@ GEO_NODE_ATTRIBUTE_TRANSFER_NEAREST
@ OB_FLAG_USE_SIMULATION_CACHE
@ SCE_EEVEE_SHADOW_ENABLED
@ SEQ_SNAP_TO_CURRENT_FRAME
@ SCE_SNAP_TO_INCLUDE_EDITED
@ SCE_SNAP_TO_INCLUDE_NONEDITED
@ RGN_FLAG_HIDDEN_BY_USER
@ SEQ_COLOR_BALANCE_METHOD_LIFTGAMMAGAIN
@ seqModifierType_ColorBalance
@ SEQ_TRANSFORM_FILTER_BILINEAR
@ SEQ_SINGLE_FRAME_CONTENT
@ SEQ_USE_EFFECT_DEFAULT_FADE
@ SN_OVERLAY_SHOW_WIRE_COLORS
@ SN_OVERLAY_SHOW_OVERLAYS
@ SN_OVERLAY_SHOW_NAMED_ATTRIBUTES
@ SI_OVERLAY_SHOW_GRID_BACKGROUND
@ SEQ_TIMELINE_SHOW_FCURVES
@ SEQ_TIMELINE_SHOW_STRIP_DURATION
@ SEQ_TIMELINE_SHOW_STRIP_OFFSETS
@ SEQ_TIMELINE_SHOW_STRIP_SOURCE
@ SEQ_TIMELINE_SHOW_STRIP_NAME
@ SEQ_TIMELINE_SHOW_STRIP_COLOR_TAG
@ SEQ_VIEW_SEQUENCE_PREVIEW
@ FILE_ASSET_IMPORT_APPEND_REUSE
@ FILE_ASSET_IMPORT_APPEND
@ FILE_ASSET_IMPORT_FOLLOW_PREFS
@ FILE_BROWSE_MODE_ASSETS
@ SO_FILTER_NO_VIEW_LAYERS
@ SPREADSHEET_FILTER_ENABLE
@ SEQ_PREVIEW_SHOW_METADATA
@ SEQ_PREVIEW_SHOW_GPENCIL
@ SEQ_PREVIEW_SHOW_SAFE_MARGINS
@ SEQ_PREVIEW_SHOW_OUTLINE_SELECTED
@ SEQ_PREVIEW_SHOW_SAFE_CENTER
@ FILE_PARAMS_FLAG_UNUSED_3
@ FILE_PARAMS_FLAG_UNUSED_1
@ FILE_PARAMS_FLAG_UNUSED_2
#define FILE_SELECT_MAX_RECURSIONS
@ V2D_VIEWSYNC_AREA_VERTICAL
@ V3D_OFSDRAW_XR_SHOW_CUSTOM_OVERLAYS
@ V3D_OFSDRAW_SHOW_SELECTION
@ V3D_OFSDRAW_XR_SHOW_CONTROLLERS
@ V3D_OVERLAY_SCULPT_SHOW_FACE_SETS
@ V3D_OVERLAY_VIEWER_ATTRIBUTE
@ V3D_OVERLAY_SCULPT_SHOW_MASK
@ V3D_OVERLAY_FADE_INACTIVE
@ V3D_OVERLAY_SCULPT_CURVES_CAGE
@ V3D_AROUND_CENTER_MEDIAN
Read Guarded memory(de)allocation.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Map
constexpr int SEQ_MAX_CHANNELS
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
void SEQ_channels_ensure(ListBase *channels)
static AttributeOwner from_id(ID *id)
bool add(const Key &key, const Value &value)
Value lookup_default(const Key &key, const Value &default_value) const
void add_new(const Key &key, const Value &value)
Span< Value > lookup(const Key &key) const
void add(const Key &key, const Value &value)
constexpr const T & first() const
constexpr int64_t size() const
constexpr bool is_empty() const
void append(const T &value)
void append(const T &value)
input_tx image(0, GPU_RGBA16F, Qualifier::WRITE, ImageType::FLOAT_2D, "preview_img") .compute_source("compositor_compute_preview.glsl") .do_static_compilation(true)
@ DENOISER_OPENIMAGEDENOISE
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
int SEQ_effect_get_num_inputs(int seq_type)
void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
ccl_global const KernelWorkTile * tile
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
std::unique_ptr< IDProperty, IDPropertyDeleter > create(StringRefNull prop_name, int32_t value, eIDPropertyFlag flags={})
Allocate a new IDProperty of type IDP_INT, set its name and value.
bNode * node_add_static_node(const bContext *C, bNodeTree *ntree, int type)
void node_remove_node(Main *bmain, bNodeTree *ntree, bNode *node, bool do_id_user)
void node_tree_set_type(const bContext *C, bNodeTree *ntree)
bNodeLink * node_add_link(bNodeTree *ntree, bNode *fromnode, bNodeSocket *fromsock, bNode *tonode, bNodeSocket *tosock)
bNodeSocket * node_add_static_socket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, int type, int subtype, const char *identifier, const char *name)
bNodeTree * node_tree_add_tree(Main *bmain, const char *name, const char *idname)
void node_rebuild_id_vector(bNodeTree *node_tree)
void node_remove_socket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
const char * node_static_socket_type(int type, int subtype)
bNodeSocket * node_add_socket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, const char *idname, const char *identifier, const char *name)
bool node_set_selected(bNode *node, bool select)
bNodeSocket * node_find_socket(bNode *node, eNodeSocketInOut in_out, StringRef identifier)
Frequency::GEOMETRY nor[]
bool RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *r_value)
const EnumPropertyItem rna_enum_property_subtype_items[]
SequencerToolSettings * SEQ_tool_settings_ensure(Scene *scene)
Editing * SEQ_editing_get(const Scene *scene)
void SEQ_retiming_data_clear(Sequence *seq)
void SEQ_time_update_meta_strip_range(const Scene *scene, Sequence *seq_meta)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
AssetLibraryReference asset_library_ref
FileSelectParams base_params
struct GpencilModifierData * next
float chain_smooth_tolerance
struct ModifierData * next
float principal_legacy[2]
MovieTrackingCamera camera
struct bNodeTree * node_group
struct NodesModifierSettings settings
struct IDProperty * properties
FileSelectParams * params
FileAssetSelectParams * asset_params
SpaceImageOverlay overlay
int custom_grid_subdiv[2]
struct SequencerTimelineOverlay timeline_overlay
struct SequencerPreviewOverlay preview_overlay
float viewer_attribute_opacity
float normals_constant_screen_size
float sculpt_curves_cage_opacity
struct bConstraint * next
struct bNodeSocket * next
ccl_device_inline int abs(int x)
void sequencer_init_preview_region(ARegion *region)
#define SEQ_SPEED_INTEGRATE
static void versioning_replace_legacy_mix_rgb_node(bNodeTree *ntree)
static void version_geometry_nodes_primitive_uv_maps(bNodeTree &ntree)
static void version_idproperty_move_data_string(IDPropertyUIDataString *ui_data, const IDProperty *prop_ui_data)
static void move_vertex_group_names_to_object_data(Main *bmain)
static IDProperty * idproperty_find_ui_container(IDProperty *idprop_group)
static void version_liboverride_nla_frame_start_end(ID *id, AnimData *adt)
static void version_idproperty_move_data_float(IDPropertyUIDataFloat *ui_data, const IDProperty *prop_ui_data)
static void versioning_replace_legacy_combined_and_separate_color_nodes(bNodeTree *ntree)
static void sort_linked_ids(Main *bmain)
static void version_liboverride_rnacollections_insertion_animdata(ID *id)
static bNodeSocket * do_version_replace_float_size_with_vector(bNodeTree *ntree, bNode *node, bNodeSocket *socket)
static void do_versions_idproperty_bones_recursive(Bone *bone)
static void version_geometry_nodes_add_attribute_input_settings(NodesModifierData *nmd)
static void version_idproperty_ui_data(IDProperty *idprop_group)
static void do_version_bbone_len_scale_fcurve_fix(FCurve *fcu)
static void version_nla_action_strip_hold(Main *bmain)
static void version_switch_node_input_prefix(Main *bmain)
static void version_liboverride_rnacollections_insertion_object(Object *object)
static void version_ensure_missing_regions(ScrArea *area, SpaceLink *sl)
static void legacy_vec_roll_to_mat3_normalized(const float nor[3], const float roll, float r_mat[3][3])
static void version_geometry_nodes_set_position_node_offset(bNodeTree *ntree)
static void version_idproperty_move_data_int(IDPropertyUIDataInt *ui_data, const IDProperty *prop_ui_data)
static void do_versions_sequencer_speed_effect_recursive(Scene *scene, const ListBase *seqbase)
#define SEQ_SPEED_COMPRESS_IPO_Y
static void do_versions_idproperty_ui_data(Main *bmain)
static void version_node_tree_socket_id_delim(bNodeTree *ntree)
static void do_version_bones_bbone_len_scale(ListBase *lb)
static void version_geometry_nodes_add_realize_instance_nodes(bNodeTree *ntree)
static void do_versions_idproperty_seq_recursive(ListBase *seqbase)
static bool version_merge_still_offsets(Sequence *seq, void *)
static void do_version_constraints_spline_ik_joint_bindings(ListBase *lb)
static void do_version_subsurface_methods(bNode *node)
static void version_liboverride_nla_strip_frame_start_end(IDOverrideLibrary *liboverride, const char *parent_rna_path, NlaStrip *strip)
static bNodeTree * add_realize_node_tree(Main *bmain)
static bool seq_meta_channels_ensure(Sequence *seq, void *)
static bool do_versions_sequencer_color_balance_sop(Sequence *seq, void *)
static bool seq_transform_filter_set(Sequence *seq, void *)
static void seq_speed_factor_fix_rna_path(Sequence *seq, ListBase *fcurves)
static void version_fix_image_format_copy(Main *bmain, ImageFormatData *format)
static bool replace_bbone_len_scale_rnapath(char **p_old_path, int *p_index)
static void version_liboverride_rnacollections_insertion_object_constraints(ListBase *constraints, IDOverrideLibraryProperty *op)
void blo_do_versions_300(FileData *fd, Library *, Main *bmain)
static bool version_fix_seq_meta_range(Sequence *seq, void *user_data)
static bool version_fix_delete_flag(Sequence *seq, void *)
static void version_geometry_nodes_replace_transfer_attribute_node(bNodeTree *ntree)
static void correct_bone_roll_value(const float head[3], const float tail[3], const float check_x_axis[3], const float check_y_axis[3], float *r_roll)
static bool seq_speed_factor_set(Sequence *seq, void *user_data)
static bool version_set_seq_single_frame_content(Sequence *seq, void *)
void do_versions_after_linking_300(FileData *, Main *bmain)
static bool seq_transform_origin_set(Sequence *seq, void *)
static void assert_sorted_ids(Main *bmain)
static bool version_seq_fix_broken_sound_strips(Sequence *seq, void *)
static void version_geometry_nodes_extrude_smooth_propagation(bNodeTree &ntree)
static void do_version_bones_roll(ListBase *lb)
static bool do_versions_sequencer_color_tags(Sequence *seq, void *)
void add_realize_instances_before_socket(bNodeTree *ntree, bNode *node, bNodeSocket *geometry_socket)
ID * do_versions_rename_id(Main *bmain, const short id_type, const char *name_src, const char *name_dst)
ARegion * do_versions_add_region(int regiontype, const char *name)
void version_cycles_property_int_set(IDProperty *idprop, const char *name, int value)
IDProperty * version_cycles_properties_from_ID(ID *id)
int version_cycles_property_int(IDProperty *idprop, const char *name, int default_value)
ARegion * do_versions_add_region_if_not_found(ListBase *regionbase, int region_type, const char *allocname, int link_after_region_type)
bNodeSocket & version_node_add_socket(bNodeTree &ntree, bNode &node, const eNodeSocketInOut in_out, const char *idname, const char *identifier)
void version_node_socket_id_delim(bNodeSocket *socket)
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)
void version_node_input_socket_name(bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name)
bNode & version_node_add_empty(bNodeTree &ntree, const char *idname)
void version_node_socket_name(bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name)
bool version_cycles_property_boolean(IDProperty *idprop, const char *name, bool default_value)
void version_socket_update_is_used(bNodeTree *ntree)
IDProperty * version_cycles_visibility_properties_from_ID(ID *id)
void node_tree_relink_with_socket_id_map(bNodeTree &ntree, bNode &old_node, bNode &new_node, const Map< std::string, std::string > &map)
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)
ARegion * do_versions_ensure_region(ListBase *regionbase, int region_type, const char *allocname, int link_after_region_type)
void version_node_output_socket_name(bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name)
void version_node_id(bNodeTree *ntree, const int node_type, const char *new_name)