Parallelize the conversion of an edge selection to a vertex selection,
which makes it approximately twice as fast (0.6 ms -> 0.3 ms).
In another test the whole node operation became about 17% faster,
from 6.9 to 5.9ms. This only applies to the "All" mode with the
edge selection domain.
Similar to 3d209d1619
Pull Request: https://projects.blender.org/blender/blender/pulls/108541
`applyTrackballMatrix` was unused after c4a4a89ef5.
Trackball supports `transform_matrix_fn` although currently not being
used.
This callback is used in the drawing of gizmos.
Because of how the Clip Editor managed region state for different view
modes before region polls were introduced (fa0f295b53), regions could be
written to files in a state that's not valid for displaying them. State
for clip editors written to files is corrected with versioning now.
Freeze frames can be added now using retiming tool with no need to hold
splitting strips or using hold offsets. To use this feature, add
retiming handle where you want to freeze the frame, hold ctrl key and
drag the handle. It is not possible to freeze frame of transition handle
and it is not possible to add transition to or from freeze frame.
Retiming system would handle these cases, but they are not useful in
practice.
When freeze frame is created, start handle of frozen segment is flagged
as `FREEZE_FRAME`. Most handling is similar to `SPEED_TRANSITION`
type handle. For evaluation, there is no special case for this type, as
it's just 2 handles with same `retiming_factor` value. It is possible to
recreate this behavior without using freeze frame feature by adding
handle between 2 consecutive content frames, but this would not be
recognized by UI or treated as freeze frame segment/handle.
Eventually this feature should replace hold offsets, leaving `Sequence`
struct with single offset type, see PR 105620 for reference.
The user count decrement and unassigning the action were split
between two different conditionals, which weren't guaranteed
to both execute/not-execute together.
In the specification of validation layers it is mentioned that
the messenger should always return VK_FALSE. When this isn't the
case VK_ERROR_VALIDATION_FAILED_EXT will be returned and the
API command will fail.
This PR will always return false.
Pull Request: https://projects.blender.org/blender/blender/pulls/108545
Objects were excluded from the ID operation, as originally they had
their own entry in their own menu. Joys of nightmare tools handling in
the Outliner...
This PR adds basic overlay support for `OB_GREASE_PENCIL`.
Currently it only renders the points and their selection status based on the ".selection" attribute.
Pull Request: https://projects.blender.org/blender/blender/pulls/108511
Painting weights in Grease Pencil with the auto-normalize option enabled,
gave unpredictable results when vertex groups with a weight of zero
were involved.
This patch resolves the issue. Vertex weights of zero are excluded from
auto-normalization. Which is a better fit for the Grease Pencil workflow,
where weights are mostly painted from scratch since the 'parent to
armature with automatic weights' operator doesn't give good results.
Pull Request: https://projects.blender.org/blender/blender/pulls/108524
No functional changes.
This commit reorganizes the transform mode functions by bundling them
into a struct called `TransModeInfo` in the file.
This structural change enhances the readability of the transform code
and simplifies the process of adding or removing modes.
Furthermore, this refactor allows for the inclusion of other essential
mode-specific values, such as 'input', which cannot be separated from
the code.
Overall, this commit improves the maintainability and extensibility of
the transform functionality.
Pull Request: https://projects.blender.org/blender/blender/pulls/108467
Steps to reproduce were:
- Open File Browser, set it to Thumbnails display mode, disable filters
- Navigate to a directory with documents that have no preview
- Change Preferences > Themes > User Interface > Icon Colors > File
Folders to light and dark colors
- See how the type icons on top of the white document icon image get
changed unexpectedly. Only type icons drawn on top of folder icon
images should change.
When drawing the document type icons on top of the folder or document
image in the center of thumbnails, they would always use the folder icon
color (Preferences > Themes > User Interface > Icon Colors > File
Folders) to determine if they should be drawn with a light or a dark
color. It should only use that when drawing on top of a folder icon
image, and the color for document icon images otherwise.
This PR changes the ranges of some of the operators in the Graph Editor to be more logical
The following operators have been modified to with a range of -1/1 with the default of 0
* Blend to Neighbor
* Breakdown
* Ease
This is a breaking change because python calls to these operators will now yield different results
(e.g. Blend To Neighbor at 0 does nothing now, while before it did blend to the left neighbor)
Pull Request: https://projects.blender.org/blender/blender/pulls/107173
When doing the second undo, the image wasn't properly marked for full
update.
There reason was that in some cases the partial_updater was
totally reconstructed: `first_changeset_id` and `last_changeset_id` were both 0.
While the `user_imp->last_changeset_id` was still its last value (e.g., 3).
The fix is to have the partial updater validator to check for the
last change set as well (it was only checking for the first change set).
This way we cover both scenarios when user_imp->last_changeset_id is out
of the range of the partial update history.
Pull Request: https://projects.blender.org/blender/blender/pulls/108533
This change will register a callback to Vulkan debug messaging
allowing us to filter out messages and log them using CLog.
This change only provides the initial changes, and more tweaks
are expected to on formatting and filtering.
Pull Request: https://projects.blender.org/blender/blender/pulls/107635
Failure to load an image-buffer during animation playback would exit,
display a text warning instead because it could potentially
exit during user interaction/playback.
No functional changes.
`TFM_TIME_DUPLICATE` is basically the `TIME_TRANSLATE` or `TRANSLATE`
modes.
The difference is that `TFM_TIME_DUPLICATE` merge duplicates keyframes
at the end of the operation.
It is an unexposed mode in python and promotes code duplication.
It has a similar initialization to `TIME_EXTEND` which redirects to
`TIME_TRANSLATE` or `TRANSLATE` depending on the spacetype.
As it is dependent on other modes (as well as `TIME_EXTEND`), it makes
things a bit more confusing.
There's no real benefit to creating a new internal mode just to
indicate this small change (merge duplicates).
So indicate in another way (by properties) that you want to merge
duplicate keyframes.
Pasting MTex referenced Texture & Object data-blocks without any
check for their validity.
This isn't ideal as it doesn't handle re-allocated ID's,
it just prevents a crash referencing freed data-blocks.
There are no relevant functional changes.
This commit removes the `Resize` fallback from `Shrink/Fatten`
operation.
This fallback is supposedly executed when the operation is called in a
mode other than mesh editing.
But even the `poll` of the `transform.shrink_fatten` operator restricts
its operation only for edit mode.
Furthermore, the fallback scenario is hardly encountered. To trigger
the fallback, the user would need to explicitly define, in the global
keymap, the `transform.transform` operator with the `Shrink/Fatten`
mode on and call it in a mode other than mesh editing.
(Although `transform.resize` could be used instead).
Therefore, considering the lack of benefits in using this resource, it
is better to remove it and prevent its use. Thus, simplifying the code.
References to data-blocks in a material were stored in-memory and could
crash if the data-blocks referenced by the material no longer existed
when pasting.
Resolve by using a blend-file for material copy/paste, matching how the
clipboard works in the 3D view-port.
Currently there is no support for including indirectly linked
data-blocks when pasting the material. Instead, data-blocks are restored
by name, by inspecting the current file.
This also fixes a crash where the `SpaceNode::nodetree` could point to
freed memory when pasting a material.
Ref !108496.
Includes contributions by @mont29.
When the temporary File Browser uses a maximized editor, it reuses the
File/Asset Browser under the cursor. When the file browsing action is
confirmed, the old editor state is restored but the file-list cleared,
so it fails to find the active asset and the ID it represents in
context.
Work around this by getting the ID before spawning the File Browser from
the operator.
When the loose edge and vertex status are cached in the source mesh and
the combination of selection domain and mode don't add loose elements,
copy the cache status to avoid recomputation. In a test with a 1 million
face grid:
- All: 23 -> 30 FPS
- Only faces: 22 -> 23.5 FPS
- Only edges and faces: 24 -> 27 FPS
Also remove unnecessary includes and fix a build error introduced in
the last commit to this area from an inconsistent forward declaration.
Excessive memory pool bloating could occur for certain workloads in
Metal. Particularly those which continuously allocate increasingly
large buffers with minimal re-use of existing buffers.
New logic added to the memory pool flushes old buffers if they
have not been used for a set period of time. Timing is calibrated
against system resources and overall memory pressure.
Metal memory pressure will run higher than OpenGL, however,
this is an active decision to provide significant performance
improvements for scenarios which allocate lots of memory and
for keeping frames queued in flight without stalling on pending
GPU work.
Authored by Apple: Michael Parkin-White
Pull Request: https://projects.blender.org/blender/blender/pulls/108083