With selected strips, it is not clear where one of them begins and another
ends since their outlines are right next to each other.
This changes strip look so that:
- All strips have consistent dark 1pt outline at the outer edge.
- Selected strips have 2pt highlight inside said outer edge.
- Selected strips also have a 1pt wide 33% opacity darker line inside the
selection highlight (and inside possible handles). To improve readability
in case strip content happens to be similar to selection/active color.
Images in PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/123431
Vulkan backend has recently switched to a render graph approach. Many
code was left so we could develop the render graph beside the previous
implementation. Last week we removed the switch. This PR will remove
most of the unused code. There might be some left and will be removed
when detected.
Pull Request: https://projects.blender.org/blender/blender/pulls/123422
The fill tool can take opacity into account ("Advanced" brush settings).
In that case any point with a total opacity lower than the threshold is
rendered as a transparent boundary.
This was still a hardcoded setting in the fill tool, now uses brush
settings.
Pull Request: https://projects.blender.org/blender/blender/pulls/123469
Almost certainly not an issue in current codebase (this 'copy' version
of `MEM_cnew` does not seem much used in the first place), but better be
consistent with the 'allocating' version.
Pull Request: https://projects.blender.org/blender/blender/pulls/123445
Sync a bit better the checks on the alignment value between
`MEM_lockfree_mallocN_aligned` and `MEM_guarded_mallocN_aligned`.
The only significant change, in `MEM_guarded_mallocN_aligned`, is the
usage of `ALIGNED_MALLOC_MINIMUM_ALIGNMENT` instead of 'magic value' `8`.
This should not have any effect on 64bits platforms, but on 32bits ones
the minimum alignment would be reduced from `8` to `4` now.
NOTE: we could also consider making these checks part of a utils
function, instead of duplicating them in the codebase.
Remove some `nullptr` checks from an operator exec function, which are
unnecessary because the corresponding poll function already checks for
them.
No functional changes.
Prevent creating NLA strips from layered Actions via the 'Push Down'
operator.
Maybe in the future the NLA will support layered Actions (as a transitional
phase, before the NLA is replaced with layered Actions itself). For now,
it's better to create stable boundaries to prevent their use in the NLA.
When NLA support is being worked on, those boundaries can be removed again.
Pull Request: https://projects.blender.org/blender/blender/pulls/123467
Avoid logging actions about `action->idroot` not matching, when evaluating
the NLA and visiting a layered Action. Layered Actions are not limited to
a single data-block type, and so the code should ignore `action->idroot`.
Add layered Action support to `BKE_action_frame_range_calc()`, by
looping over all F-Curves of all Bindings in the Action.
Introduce `animrig::fcurves_all(action)`, which returns a vector of all
F-Curves in the Action, both for legacy and layered Actions.
No functional changes for legacy Actions.
When installing from disk, include remote repositories in the list.
- Works with drag & drop from file system.
- This is the only way to "downgrade" an extensions.
Extensions in remote repositories that have no remote entries (orphans)
are now listed in the UI and the "list" sub-command.
Required for installing into remote repositories from disk (see #122302)
Details:
- Consistent ordering (local, remote) arguments.
- Use zip(..., strict=True) when sequences are expected to be aligned.
Add an export test to cover some simple animation scenarios that would
have protected against recent bugs:
- A simple object animation (would have prevented `122625`)
- An armature animation (would have prevented `724a674baed`)
- A shape key animation (would have indirectly found `6c5ce883e73`)
Pull Request: https://projects.blender.org/blender/blender/pulls/123458
Part of #118145.
Use the recently added utility for base mesh data, and for BMesh and
multires add a compromise that gets some benefits of simpler loops
but still avoids some duplication.
Also add move a recently added utility to only affect visible grid
vertices to the relevant header and reuse it. I expect this won't be a
permanent part of the API but for now it's better than duplicating
all the loops twice.
For base mesh sculpting, we already draw the original data instead of the
evaluated data, so the evaluated mesh doesn't have to be updated to
contain the new attribute. This is different from multires sculpting
because sculpt brushes and drawing only deal with the evaluated
SubdivCCG, not the original multires modifier data. Removing the
unnecessary update removes a noticeable pause when clearing and
adding a mask.
Part of #118145.
Use a utility for updating mask values and detecting changes and
pushing undo steps. Also use the attribute API for accessing color
attributes and pass flood fill data as arguments instead of a separate
struct.
Part of #118145.
There is more boilerplate now, but hot loops are generally simpler,
and I think we can reuse the structure for other operators that create
masks, similar to `vert_hide_update`.
This adds additional logic to `GreasePencil::rename_node` to rename
the strings in the modifier influence data.
This is similar to how `ED_armature_bone_rename` handles renaming of
strings.
Resolves#123321.
Pull Request: https://projects.blender.org/blender/blender/pulls/123365