Root cause is, that reverse playback would not call
`BKE_sound_play_scene()`, however `BKE_sound_stop_scene()` was called
always.
There was some weird logic in `ED_screen_animation_play()` where
condition for what sound scene was to be stopped exactly was inverted
for sequencer and duplicated for non-sequencer scene. This may also
be incorrect if somebody manages to start playback in active scene, then
create sequencer scene and stop it there.
Fortunately `ScreenAnimData` keeps pointer to scene which started
playback, so this is used to also stop the playback.
To make this code bit more readable, the function was split into
functions starting and stopping the playback, so the logic can also be
simplified a bit.
Finally, `sound_device_use_end_after()` was modified to do sanity check.
If the number of users is already 0, it does nothing and returns.
There assertion to catch this in debug builds.
Pull Request: https://projects.blender.org/blender/blender/pulls/147613
This patch shows the start and end frames of the Movie Clip in its UI
template, which is now shown in the compositor node N-panel and camera
background image
Pull Request: https://projects.blender.org/blender/blender/pulls/145541
On certain platforms Blender can crash on startup after the update of
VMA. This was because we want to select the correct memory area based on
requirements/preferences, but the overall flag was set to auto.
These options are mutual exclusive. This PR changes the flags to use the
requirements/preferences.
Pull Request: https://projects.blender.org/blender/blender/pulls/147781
This patch mixes the alpha channel of the color in the Mix mode of the
Mix node. This has no effect on EEVEE/Cycles since they do not support
alpha, but affects the Compositor, Geometry Nodes, and Texture Nodes.
Previously, the alpha of the first color was assumed, which meant mixing
two images with transparency using a mask in the compositor resulted in
part of the image having bad alpha and required manually mixing of the
alpha channel. And this is the main motivation of this patch.
Pull Request: https://projects.blender.org/blender/blender/pulls/146461
This read as if it enabled window decorations.
Clarify & update the doc-strings of windowing arguments to be consistent.
Also order their inclusion in --help more logically.
Bug report #146812 shows areas being vertically resized incorrectly
when there are multiple areas at minimum height adjacently aligned
at the bottom with the lower one being a SPACE_ACTION-type editor.
So timeline minimized at the bottom with another minimized area
directly above it and then window height is increased. Our code that
scales area vertices has specific code to keep a minimized timeline
at minimum height when at the bottom with increased window height. We
also have code that ensures that all areas are at least minimum height.
These two things conflict in this specific case because they are both
done while relying on area->winy, which is not updated between
operations. This PR uses screen_geom_area_height instead, which uses
screen vertex distances.
Pull Request: https://projects.blender.org/blender/blender/pulls/147764
The Selection to Active operator failed when the selected object was
parented to the active object. Fix by allowing child objects to move to
the active object unless "Offset" is enabled.
Ref !147204
A combination of a linear gradient with the 'Sphere' distance curve
preset could cause NaN values due to evaluating the sqrt of a negative
value. To avoid this, clamp the input value to a lower bound of 0.0f.
This fixes the Smooth, Sphere, and Inverse Square presets.
Pull Request: https://projects.blender.org/blender/blender/pulls/146693
Mesh invariants imply that edges and faces must be unique, so things
like reversed edges or duplicate faces with equal vertices are invalid.
For this reason, every time we generate new elements we have to ensure
that all new elements are unique between each other and already existing
elements. The recent refactor (ea875f6f32) introduced a new
algorithm to generate new mesh elements, and deduplication of new
elements was also a part of it. The problem is that the deduplication
only guaranteed that the original elements and new elements don't
overlap; deduplication between each new elements is not complete.
To solve the problem both new triangles and new edges have to be
deduplicated, even if there is no duplicates. Just to know this we have
to build a hash sets.
Triangle deduplication is a special part of the triangulation code,
but edges already handled elsewhere in the code base.
This refactor fixes this by replacing the original approach with one
which guarantees distinct faces and edges in the result.
Unfortunately, this fix increases runtime of the node 10x for a simple
cube with 500-vertex sides. It should be possible to make the
performance better again, but that requires more work.
Other work had to be done to enable this, so this depends on:
- [x] 157e7e0351
- [x] fa8574b80b
Co-authored-by: Hans Goudey <hans@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/147634
These grid creation functions can return a grid without data when
certain parameters are invalid. The "set_output" function of the
geometry node execution parameters asserts that the data is
not null, so I assume this is invalid and causes crashes later on.
Pull Request: https://projects.blender.org/blender/blender/pulls/147741
Caused by ae2034e6c5
The extra code to handle different domains and types for the ID
attribute didn't handle the case where the field just referenced
the same array as the existing attribute on the goemetry. The generic
"capture field on geometry" utility does handle this, and using it is
preferrable anyway since optimizations can be reused.
Fixes part of #147694
Pull Request: https://projects.blender.org/blender/blender/pulls/147736
The final image produced by the compositor can have domain translation
on it (e.g. caused by a Translate or Transform node). Similar to how
the regular compositor viewer node remembers the output domain
translation, do the same in the compositor modifier.
Bubble back that translation up to VSE rendering code, where it is
then added to regular strip transform.
In order to make this "bubble up" part easier, refactored modifiers
so that instead of soup of parameters they all get a struct
ModifierApplyContext with all the relevant data.
Added a new VSE render test that covers various compositor
transformation nodes (translate, rotate, transform, corner pin).
Pull Request: https://projects.blender.org/blender/blender/pulls/147695
Caused by null de-reference when accessing `sequencer_scene`.
Return false if sequencer scene is null to indicate, that the path to
strips or modifiers can not be created.
Pull Request: https://projects.blender.org/blender/blender/pulls/147594
The Radial Tilling node crashes in the compositor in GPU mode. This is
because the compositor does not yet support 2D vectors in shader code
generation, but properly supports and expects them in the interface,
which the Radial Tilling node declares. This results in a bad shader
which crashes Blender.
To properly fix this, we need to:
- Support 2D vectors in compositor GPU material shader code generation.
- Support 2D vectors in shader node GPU stack construction.
- Adjust the interface of radial tilling to actually use 2D vectors.
This seems risky for 5.0, so this patch temporarily drops support for
the node in the compositor in 5.0. Then once 2D vectors are supported,
it can be enabled again.
Pull Request: https://projects.blender.org/blender/blender/pulls/147627
- Add an explicit check with a better error message than "Out of memory"
- Initialize SDefVert so the later null checks don't try to free
uninitialized data.
Pull Request: https://projects.blender.org/blender/blender/pulls/147723