Merge branch 'blender-v4.0-release'

This commit is contained in:
Sergey Sharybin
2023-10-19 11:02:40 +02:00
2 changed files with 36 additions and 6 deletions

View File

@@ -545,7 +545,8 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
blo_update_defaults_scene(bmain, scene);
if (app_template && STREQ(app_template, "Video_Editing")) {
if (app_template &&
(STREQ(app_template, "Video_Editing") || STREQ(app_template, "2D_Animation"))) {
/* Filmic is too slow, use standard until it is optimized. */
STRNCPY(scene->view_settings.view_transform, "Standard");
STRNCPY(scene->view_settings.look, "None");
@@ -553,7 +554,13 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
else {
/* Default to AgX view transform. */
STRNCPY(scene->view_settings.view_transform, "AgX");
}
if (app_template && STREQ(app_template, "Video_Editing")) {
/* Pass: no extra tweaks needed. Keep the view settings configured above, and rely on the
* default state of enabled AV sync. */
}
else {
/* AV Sync break physics sim caching, disable until that is fixed. */
scene->audio.flag &= ~AUDIO_SYNC;
scene->flag &= ~SCE_FRAME_DROP;

View File

@@ -361,7 +361,7 @@ static void interpolate_curve_shapes(bke::CurvesGeometry &child_curves,
const float neighbor_weight = neighbor_weights[neighbor_i];
const IndexRange guide_points = guide_points_by_curve[neighbor_index];
const Span<float3> neighbor_positions = guide_positions.slice(guide_points);
const float3 &neighbor_root = neighbor_positions[0];
const float3 &neighbor_root = neighbor_positions.first();
const float3 neighbor_up = guides_up[neighbor_index];
BLI_assert(math::is_unit_scale(neighbor_up));
@@ -390,8 +390,22 @@ static void interpolate_curve_shapes(bke::CurvesGeometry &child_curves,
/* This method is used when guide curves have different amounts of control points. In
* this case, some additional interpolation is necessary compared to the method above. */
const Span<float> lengths = parameterized_guide_lengths.slice(
parameterized_guide_offsets[neighbor_index]);
const IndexRange guide_offsets = parameterized_guide_offsets[neighbor_index];
if (guide_offsets.is_empty()) {
/* Single point curve. */
float3 rotated_relative = neighbor_root;
if (!is_same_up_vector) {
rotated_relative = normal_rotation * rotated_relative;
}
const float3 global_pos = rotated_relative * neighbor_weight;
for (float3 &position : child_positions) {
position += global_pos;
}
continue;
}
const Span<float> lengths = parameterized_guide_lengths.slice(guide_offsets);
const float neighbor_length = lengths.last();
sample_lengths.reinitialize(points.size());
@@ -535,8 +549,17 @@ static void interpolate_curve_attributes(bke::CurvesGeometry &child_curves,
}
}
else {
const Span<float> lengths = parameterized_guide_lengths.slice(
parameterized_guide_offsets[neighbor_index]);
const IndexRange guide_offsets = parameterized_guide_offsets[neighbor_index];
if (guide_offsets.is_empty()) {
/* Single point curve. */
const T &curve_value = src[guide_points.first()];
for (const int i : points) {
mixer.mix_in(i, curve_value, neighbor_weight);
}
continue;
}
const Span<float> lengths = parameterized_guide_lengths.slice(guide_offsets);
const float neighbor_length = lengths.last();
sample_lengths.reinitialize(points.size());