Add loop selection identical to the behavior of ALT+Click in Edit Mode.
* ALT click: select loop
* ALT Shift click: add loop while retaining current selection
* ALT Shift Ctrl click: deselect loop
Pull Request: https://projects.blender.org/blender/blender/pulls/107653
Replace the implementation of the separate and delete geometry nodes
for meshes. The new code makes more use of the `IndexMask` class, which
was recently optimized. The main goal is to make more of the work scale
with the size of the result mesh rather than the input. For example,
instead of keeping a map from input to output elements, the maps used
to copy attributes go from output to input elements.
The new implementation is generally 2-4x faster, depending on the mode
and the number of elements selected. The new code is also able to skip
more work when nothing is removed.
This also allows using more existing attribute interpolation code,
allowing the overall removal of over 300 lines. Some of the attribute
utilities from a similar change for curves (f63cfd8e289da0078266) are
reused directly.
The indices of the result changes, so the test file needs to be updated.
Pull Request: https://projects.blender.org/blender/blender/pulls/108435
Using unique_ptr is typically the better practice since it makes memory
management automatic and makes ownership clear. Also use references
when retrieving items from the span, and don't unnecessarily specify
specific lambda captures.
Pull Request: https://projects.blender.org/blender/blender/pulls/108510
No user visible changes expected.
Part of #96713, continuation of work started in 249e4df110 and 2e221de4ce.
Refer to these for a motivation and design overview.
Adds a new tree-element class for curve IDs.
Pull Request: https://projects.blender.org/blender/blender/pulls/108498
"Remove addon" button was in the row labeled "Internet", which is
misleading when no documentation buttons appears in the same row.
Now a separate row is created instead.
Ref !108429.
No user visible changes expected.
Part of #96713, continuation of work started in 249e4df110 and 2e221de4ce.
Refer to these for a motivation and design overview.
Adds a new tree-element class for mesh IDs.
Pull Request: https://projects.blender.org/blender/blender/pulls/108437
This adds the operator `OBJECT_OT_grease_pencil_add` to create a new grease pencil object.
Currently it supports the `EMPTY` and `STROKE` type.
This also replaces the add menu for the legacy grease pencil type in the Shift+A menu when the experimental option is enabled.
Pull Request: https://projects.blender.org/blender/blender/pulls/108462
IndexMask::complement() is often used in geometry processing
algorithms when a selection needs to be inverted, mostly just in
curves code so far.
Instead of reusing `from_predicate` and lookup in the source mask,
scan the mask once, inserting segments between the original indices.
Theoretically this improves the performance from O(N*log(N)) to O(N).
But with the small constant offset of the former, the improvement is
generally just 3-4 times faster. However in some cases like empty
and full masks, the new code takes constant time.
![image](/attachments/d2f6b0be-f195-4206-9bf4-c0ab20041d1b)
Pull Request: https://projects.blender.org/blender/blender/pulls/108331
This is the copyright file which is distributed with the
official Blender builds distributed via blender.org project,
with the intent to indicate that the build is done by the
blender foundation.
This change makes the file shorter, avoiding stating agreements
in the file itself, and instead referring to the license.
This matches more closely to how other open source projects
tackle the COPYING file.
The updated content has been reviewed by Ton.
Ref #107295
Since avuitl 57.30.100 the pkt_duration is deprecated, and
the duration is to be used instead.
The units seems to match, and also from the avcodec decoder.c
the `frame->pkt_duration = frame->duration;` so does not seem
we need to do any conversion.
The change in FFmpeg is from 2022, which is a bit recent, so
the access to the duration is hidden behind a compatibility
API.
Pull Request: https://projects.blender.org/blender/blender/pulls/108451
A lot of files were missing copyright field in the header and
the Blender Foundation contributed to them in a sense of bug
fixing and general maintenance.
This change makes it explicit that those files are at least
partially copyrighted by the Blender Foundation.
Note that this does not make it so the Blender Foundation is
the only holder of the copyright in those files, and developers
who do not have a signed contract with the foundation still
hold the copyright as well.
Another aspect of this change is using SPDX format for the
header. We already used it for the license specification,
and now we state it for the copyright as well, following the
FAQ:
https://reuse.software/faq/
In case a part of an override hierarchy would still be linked data, and
there would be other liboverride hierarchies sharing usage of that same
linked data, trying to create a partial override of that linked data
into a hierarchy would create very unreliable results.
This commit now only process each ID at most once, to ensure that the
liboverride will only be put in one liboverride hierarchy.
This is only a partial fix, results now should at least always be
valid. However, due to inheritently broken Outliner code when it comes
to same data in more than one path of the tree, the place where
(hierarchy in which) the new liboverride will be created is currently
'random' and unpredictable from user perspective.
This commit contains some code to try to alliviate that (by enforcing
processing of the active elements first), but unfortunately this does
not work either.
- Do not remap local liboverrides from other hierarchies when a
liboverride hierarchy root is provided (such that in case a linked
data is overridden as part of one hierarchy, the new liboverride does
not get assigned to other liboverride hierarchies of the same reference
data).
- Do not attempt to instanstiate newly overridden collections or objects
when they are part of a hierarchy and not the root of that hierarchy
(as they can be sondiered as already handled through that hierarchy
processing). Avoids attempts to instantiate them when doing partial
liboverride into an already existing hierarchy.
Adds the "Corners of Edge" topology node to geometry nodes.
Combining this node with the "Face of Corner" node allows getting
informations about the faces connected to an edge. The behavior is
slightly non-obvious-- the node only gives the corner neighbors
that come *before* the current edge in directly neighboring faces.
This allows the operation to be easily reversed and reduces
redundancy between nodes.
See the devtalk thread: https://devtalk.blender.org/t/29379
Pull Request: https://projects.blender.org/blender/blender/pulls/107968
2ffd08e952 introduced new system to control attribute life time.
Some specific function for that system is missed in `Shortest Edge Paths`.
This pull request add this functions:
1. `reference_pass_all` for socket declarations.
2. `for_each_field_input_recursive` for field input nodes.
Pull Request: https://projects.blender.org/blender/blender/pulls/108460
When entering sculpt mode on an object without any color attributes and
starting to paint, the newly created color attribute was set active, but
not default (camera icon).
Now set it default as well.
Pull Request: https://projects.blender.org/blender/blender/pulls/108271
Follow up to [0], some material data wasn't accounted for.
- The embedded node-tree's owner_id wasn't set.
- Animation data (both the material & it's embedded node-tree).
- Updating depsgraph relations is needed when animation data is freed
as part of paste too.
Also report when paste fails.
[0]: 5b5a1e358102cb14eb9b0e60c91a5a41f50b62ec
Commented [0] (2.5x refactor that disabled many free functions),
for some reason this call was never re-enabled.
Add back the free call along with other clipboard buffers.
---
Cherry picked [1] from main as other fixes material clipboard
are difficult to validate when memory is leaking.
[0]: a1c8543f2acd7086d412cb794b32f96794b00659
[1]: cb0c4f04d4b318963158a1a2707b259c49e210e5
Use a macro to make the ID-free switch more compact & use ID indices
for better readability. Also typedef the enum so missing types in the
switch will report compiler warnings.