Commit Graph

120055 Commits

Author SHA1 Message Date
Jacques Lucke
83fa565ec2 Nodes: improve inserting nodes with link-drag-search
This makes link-drag-search more convenient when one wants to insert a new node
between existing nodes. The change currently also affects normal node-insertion
when dragging it. The exact behavior still has to be figured out.

Pull Request: https://projects.blender.org/blender/blender/pulls/128197
2024-09-30 11:14:43 +02:00
Pratik Borhade
866ef5b468 Fix #126587: GPv3: Select less fails if all points in stroke selected
Handle the case separately when end points of strokes are selected.
Always deselect them (i.e. set "true", later array values are inverted)
when executing select less operation.

Pull Request: https://projects.blender.org/blender/blender/pulls/126591
2024-09-30 11:00:34 +02:00
Pratik Borhade
7f226dc8ed Fix: GPv3: Redraw outliner when group is added
Send notifier which outliner space can listen to redraw elements
when group is added.

Pull Request: https://projects.blender.org/blender/blender/pulls/128289
2024-09-30 10:59:20 +02:00
Pratik Borhade
17fc09d5aa Fix: GPv3: Group color tag icons in outliner and dopesheet
Missed in cea18e62c5.

Pull Request: https://projects.blender.org/blender/blender/pulls/128287
2024-09-30 10:58:58 +02:00
Pratik Borhade
99bf9f4534 GPv3: Add keys to all layers in sculpt mode
When auto key is enabled, add keys to all layers in sculpt mode.
After 37458329e2,  `ensure_active_keyframe` accepts layer argument. Run
a loop over all the layers, call above function to handle keyframe/drawing at
current frame.

Resolves #127650.

Pull Request: https://projects.blender.org/blender/blender/pulls/127849
2024-09-30 10:48:54 +02:00
Jeroen Bakker
6ec35c619f Vulkan: Reduce Pipeline Logging
Pipeline pool could log to much information that confused developers who
are not up to date what pipelines are. This PR will hide the confusing
messages. When working on Vulkan these messages can still be shown by
raising the log level.

See !128254

Pull Request: https://projects.blender.org/blender/blender/pulls/128352
2024-09-30 08:46:17 +02:00
Jeroen Bakker
b6aa4a3142 OpenGL: Add Intel HD 405 to limited support.
This rare GPU has z-fighting issues in editor mode. Might be fixable by
changing the bias, but would decrease precision on other platforms as
well. Better to move this GPU to limited support. It is working, just
has some drawing artifacts.

See #128179

Pull Request: https://projects.blender.org/blender/blender/pulls/128351
2024-09-30 08:44:12 +02:00
Campbell Barton
9b8b03d8e6 Mesh: comments for a code-blocks which can leak memory 2024-09-30 13:40:48 +10:00
Campbell Barton
c852f7402e Fix #128226: Memory leak selecting meshes in multi-object edit-mode
The meshes custom data-mask edit-mode check only considered the object
in edit-mode if it was the active object. This isn't correct as multiple
objects can be in edit-mode at once.

The potential for `mesh_get_eval_deform` to leak memory remains,
this just avoids an unnecessary mesh re-generation on selection
(which was causing the leak), see: !128228 for details.
2024-09-30 13:23:25 +10:00
Hans Goudey
a2d9d9e987 Fix #128269: Performance regression for some brushes
Brushes that restored from undo step data on every brush
iteration triggered a performance regression because of
missing filtering of unchanged nodes after recent changes
to the PBVH dirty positions tagging system. There was a
TODO comment left from 76c322047e that
I had forgotten about.
2024-09-29 21:54:12 -04:00
Hans Goudey
ce301be39e Fix #128328: Missing PBVH draw data reupload of non-visible nodes
For example, undoing an entire-mesh operation when only a small part
of it is visible wouldn't affect the currently out-of-view BVH nodes.
2024-09-29 21:20:12 -04:00
Hans Goudey
eb6b96e70c Cleanup: Avoid unnecessary string copy when adding attribute 2024-09-29 19:01:17 -04:00
Sean Kim
60acd02cf9 Fix: Sculpt: Clay strips brush ignores hardness
Fix in 690d89089f was incomplete, did not
affect Dyntopo and Multires

Pull Request: https://projects.blender.org/blender/blender/pulls/128332
2024-09-29 21:08:01 +02:00
Sean Kim
4bc146f00a Refactor: Sculpt: Access mesh attributes once per brush step
Part of #118145.

Prior to this commit, for each node that a brush step affected, we would
look up the `.sculpt_mask` and `.hide_vert` attributes. To avoid this
overhead, this commit creates a helper struct to hold commonly used
attributes and reduces the frequency that they are accessed.

Pull Request: https://projects.blender.org/blender/blender/pulls/128286
2024-09-29 20:28:35 +02:00
Leon Schittek
012b0ec528 Fix #128262: Fix alignment in Grease Pencil layer tree view
Remove the additional padding that was added to groups in the Layer
tree view to align the icons and labels with the ones from the normal
layers.

Pull Request: https://projects.blender.org/blender/blender/pulls/128305
2024-09-29 15:21:21 +02:00
Pratik Borhade
774bf48925 Fix: Build error without OpenVDB
Wrong identifier added in 5e46e3d28a. Should be `WITH_OPENSUBDIV`

Pull Request: https://projects.blender.org/blender/blender/pulls/128318
2024-09-29 08:47:37 +02:00
Campbell Barton
9c8c786a05 Fix error in studiolight preview
Regression in [0].

[0]: 473bd60164
2024-09-29 14:57:36 +10:00
Germano Cavalcante
68c3517871 Fix: 'Snap to Grid' defaults to 'Center' instead of 'Median' when 'Closest' is selected
The 'Closest' 'Snap With' option does not work well with 'Snap to Grid'
due to the unpredictable nature of this 'Snap With' option. That's why
another option is used in this case.

The option chosen in this case is the same one that was used in
'Absolute Grid Snap', that is, 'Median'.
2024-09-28 17:45:34 -03:00
Hans Goudey
d24483e0cf Geometry: Use StringRef for vertex group lookup
Fixes incorrect usage of StringRef in new grease pencil code, where
`.data()` was passed as a null terminated C string. Removes the now
unnecessary `std::string` creation that attribute accessors used to
fix that problem.

Pull Request: https://projects.blender.org/blender/blender/pulls/128298
2024-09-28 20:58:34 +02:00
Hans Goudey
68be2d9af1 Cleanup: Add helper function to access vertex group index from name
In addition to the existing function which takes an ID argument.
2024-09-28 10:39:04 -04:00
Hans Goudey
751e009898 Cleanup: Remove unused variables in USD attribute writing 2024-09-28 10:26:22 -04:00
Hans Goudey
690d89089f Fix: Sculpt: Clay strips brush ignores hardness
Error in 6d9641daee.
The cube distances calculation actually doesn't fully process hardness.
2024-09-28 10:25:37 -04:00
Iliya Katueshenock
117d4a51c3 Fix #128193: conditional socket visibility broken on Distribute Points on Faces node
Missed disabling of the sockets.

Pull Request: https://projects.blender.org/blender/blender/pulls/128214
2024-09-27 22:22:26 +02:00
Jacques Lucke
578fd9b10e Geometry Nodes: support grease pencil in Duplicate Elements node
This adds support for using the Duplicate Elements node on grease pencil on the
point, curve and layer domain.

Pull Request: https://projects.blender.org/blender/blender/pulls/128210
2024-09-27 21:54:19 +02:00
Jesse Yurkovich
63a4b45b43 Cleanup: USD: take advantage of new AttributeIter::get API
Make use of the potentially more efficient `AttributeIter::get` API.

Pull Request: https://projects.blender.org/blender/blender/pulls/128211
2024-09-27 21:38:01 +02:00
Sean Kim
6d83f9a6b3 Cleanup: Sculpt: Extract common factor calculation methods
Part of #118145.

This PR introduces a number of helper methods used across the brush
implementations to reduce duplication when calculating a base value for
the `factors` array.

Not all brushes have been ported to use these helper methods - a
conservative approach was taken to avoid adding complexity for the
common case.

Pull Request: https://projects.blender.org/blender/blender/pulls/128235
2024-09-27 20:42:54 +02:00
Jesse Yurkovich
6c62fe7ac8 Fix: Hydra memory leak when generated images are saved
When attempting to cache a generated image, the ImageFormatData's
view_settings would inadvertently be leaked due to the settings being
assigned a different set of values without first being free'd.

Additionally, there was another missed free from an early return a bit
later in the same function.

Pull Request: https://projects.blender.org/blender/blender/pulls/128229
2024-09-27 19:21:11 +02:00
Jesse Yurkovich
04c5044e61 Fix: Hydra "Object" texture coordinates incorrectly set to "World"
Found by inspection but looks like a simple oversight.

Example images in PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/128223
2024-09-27 19:20:25 +02:00
Bastien Montagne
a9fa3657a6 Fix (unreported) link/append code adding full ID names in some cases.
This code handles ID types separately, so id names should not contain
the ID code prefix.
2024-09-27 19:06:55 +02:00
Hans Goudey
5e46e3d28a Subdiv: Remove topology refiner C-API wrapper
Remove the indirection previously used for the topology refiner
to separate C and C++ code. Instead retrieve the base level in
calling code and call opensubdiv API functions directly. This
avoids copying arrays of mesh indices and should reduce
function call overhead since index retrieval can now be inlined.
It also lets us remove a lot of boilerplate shim code.

The downside is increased need for WITH_OPENSUBDIV defines
in various parts of blenkernel, but I think that is required to avoid
the previous indirection and have the kernel deal with OpenSubdiv
more directly.

Pull Request: https://projects.blender.org/blender/blender/pulls/120825
2024-09-27 19:01:12 +02:00
Richard Antalik
580b4a1a2d Fix #127479: VSE produces blank scene offscreen renders
If conditions are not met for offscreen rendering, render job is used as
fallback. This can be skipped if there is possibility of race condition.
This was only considered for case where `context->for_render` was false,
since this indicates that call is invoked by the job itself.

If scene strip display is set to `OB_RENDER`, it needs to start the
render job. So variable `do_seq_gl` was renamed to `is_preview` and
reused in race avoidance connditon. This was done to convey clearer
meaning and match comments.

This change does make code less safe - race is avoided by UI not
allowing to run F12 render and opengl render at the same time. However,
I don't think, this could be easily resolved on VSE side without
suspending thread or being able to run multiple render jobs.

Pull Request: https://projects.blender.org/blender/blender/pulls/127926
2024-09-27 18:41:26 +02:00
Julian Eisel
0a2a8d612a Cleanup: Remove unused sculpt brush reset function
This isn't in use anymore since brush assets were merged, they have
their own resetting logic.
2024-09-27 18:36:23 +02:00
Pratik Borhade
7665e28b37 GPv3: Assert in weight paint with zero points
Memory allocated to vertex buffer but the total verts are zero. This
triggers assert in bind function when `vbo_size_` is zero. Exit out of
funtion early to prevent the assert.
Also wrap `DRW_shgroup_call_no_cull` with if check.

Pull Request: https://projects.blender.org/blender/blender/pulls/128248
2024-09-27 17:29:08 +02:00
Pablo Vazquez
d6ec2f0539 UI: Update icon for Grease Pencil layer and group
The current icon for Grease Pencil layers is a pen, it doesn't really
communicate the "layer" aspect. Replace with a paper sheet-like icon.

The layer group gets its own icon. It's a stack of animation paper.

Inspired by Daniel Correa Flores's design on DevTalk:
https://devtalk.blender.org/t/ui-discussion-grease-pencil-layer-and-layer-group-icons/30693/25

Pull Request: https://projects.blender.org/blender/blender/pulls/128208
2024-09-27 17:24:40 +02:00
Falk David
19465bec19 GPv3: Add canvas options to the overlay settings
This adds the color, subdivisions, scale, and offset options to the canvas overlay.

Pull Request: https://projects.blender.org/blender/blender/pulls/128259
2024-09-27 16:58:38 +02:00
Lorenzo-Carpaneto
29c6e6c5b2 GPv3: "Select Similar" operator
Implements the "Select Similar" operator for Grease Pencil v3.

Several modes are available. Each mode has a dedicated "distance" metric:
- layer, material: compared by index
- radius, opacity: simple value difference
- vertex color: euclidian float4 distance metric

The implementation uses a `Set` to find selected values first, then compare each point attribute value to each value in the set until a distance below the threshold is found. This could be optimized by using a KD-Tree in the future. Layer comparison is a special case because points are already separated into drawings by layer, so any drawing in a "selected" layer is becomes fully selected.

Co-authored-by: Lukas Tönne <lukas@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/111410
2024-09-27 16:51:19 +02:00
Christoph Lendenfeld
85e4bd19f6 Anim: Separate Slots operator
This adds an operator that splits all slots of the action on the active object,
into separate actions.

The newly created actions will be named `slot_name+Action`.
All users of those slots will be reassigned to this new action.

The exploded action will not be deleted, but will end up with 0 users
unless a fake user is set.

------

For the review, does that operator name make sense?

Pull Request: https://projects.blender.org/blender/blender/pulls/128251
2024-09-27 16:39:29 +02:00
Julian Eisel
1cf81d733a Fix: Outdated default brush names after essentials library update
Fixes paint modes not having a default brush activated.

Brush names changed to not include the now unnecessary mode suffix in
9dfd0a171f.
2024-09-27 16:31:05 +02:00
Sybren A. Stüvel
b1d2a70dbd Anim: send notifier when deleting a node from a node tree/group
Send a WM notifier when deleting a node from a node tree/group. Removing
a node also removes its animation data, and thus animation editors need
to receive a notification to refresh.

Pull Request: https://projects.blender.org/blender/blender/pulls/128255
2024-09-27 16:24:06 +02:00
Sybren A. Stüvel
7aa99cd562 Anim: make BKE_animdata_fix_paths_remove() compatible with slotted Actions
`BKE_animdata_fix_paths_remove()` now calls into the new function
`animrig::legacy::action_fcurves_remove()`, which works for both
legacy and slotted Actions.

Also I updated the documentation of the BKE function so that it's clear
what it's actually doing.

No functional changes for legacy Actions.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128252
2024-09-27 16:23:31 +02:00
Sybren A. Stüvel
7acf871aa4 Refactor: Anim, simplify BKE_animdata_fix_paths_remove
Reduce cognitive complexity of `BKE_animdata_fix_paths_remove()` by
returning early, returning literals (instead of variables) when the
returned value is known, and just calling `BKE_animdata_from_id()` instead
of re-implementing it here.

No functional changes.
2024-09-27 16:23:30 +02:00
Campbell Barton
e21b424eee Attributes: support setting the active attribute to "None"
Support setting: `object.data.attributes.active = None` for
ID attributes. Use -1 to represent no active index.

Resolves #127691

Ref !128233
2024-09-27 23:47:13 +10:00
Sybren A. Stüvel
6ed98c912b Anim: Handle legit slot assignment failure in versioning code
With the Slotted Actions experimental feature enabled, Blender will use
versioning to automatically convert legacy Actions into slotted ones.

Assignment of the converted Action's slot can fail in the following
scenario, when dealing with the following dance between "old Blender"
(only supporting legacy Actions) and "new Blender" (versions supporting
slotted/layered Actions):

1. New Blender: create an action with two slots, ME and KE, and assign
   to respectively a Mesh and a Shape Key. Save the file.

2. Old Blender: load the file. This will load the legacy data, but still
   keep the assignments. This means that the Shape Key will get a ME
   Action assigned, which is incompatible. Save the file.

3. New Blender: upgrades the Action, and tries to assign its only slot.
   This will fail for the shape key, as the ID type doesn't match.

The failure is in itself okay, as there was actual data loss in this
scenario, and so issuing a warning is the right way to go about this.
The Action is still assigned, but the data-block won't get a slot
assigned.

Pull Request: https://projects.blender.org/blender/blender/pulls/128199
2024-09-27 15:43:03 +02:00
Sybren A. Stüvel
fff6e59dde Anim: when assigning Action, check its ID type and NLA tweak mode
When assigning an Action with the new API:

- check the Actions ID type (if it is a legacy Action), and
- check whether the ID is in NLA tweak mode.

This means that action assignment can fail, so the
`animrig::assign_action()` and `animrig::unassign_action()` functions
now return a `[[nodiscard]] bool`.

Part of `generic_assign_action()` has now also been shielded with an
`#ifdef WITH_ANIM_BAKLAVA` just to be sure.

This also includes a change in `BKE_animdata_free()`. That function now
first exits NLA tweak mode (if enabled) before freeing the Actions. This
makes it possible to simply un-assign the assigned Action, as all the
NLA tweakmode stuff has already been taken care of by the responsible
function.

Pull Request: https://projects.blender.org/blender/blender/pulls/128199
2024-09-27 15:43:02 +02:00
Sybren A. Stüvel
f7effe8597 Anim: fix null pointer dereference when pushing down an Action
Pull Request: https://projects.blender.org/blender/blender/pulls/128199
2024-09-27 15:43:02 +02:00
Pablo Vazquez
fd59591fdc UI: Use proper icon for Grease Pencil selectors
Layer selectors in Line Art and all modifier's Influence panel was
using the Grease Pencil icon, instead of the Grease Pencil Layer icon.

At the moment they are similar so it's easy to miss. But soon there
will be a new icon for layers so better use the right one.

The Line Art modifier was using Grease Pencil icon for materials
selector.
2024-09-27 15:05:05 +02:00
Jeroen Bakker
481c8fd5a7 Vulkan: Memory leak in immediate mode during exit
When exiting the immediate buffers are discarded, but where not
destroyed making the buffers still leak.
Detected when looking into descriptor set freeze issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/128249
2024-09-27 15:01:10 +02:00
Hans Goudey
98f0926825 Geometry Nodes: Node tools soft selection and sculpt mask support
Implements the design from #120318. The existing selection nodes now have
the ability to deal with float/soft selection. For meshes the soft selection
corresponds to the inverse of the sculpt mask attribute. In the future this
will likely be unified with edit mode selection a bit more which is why
this design was chosen compared to separating masking and selection.
Curves and point clouds already use a single selection attribute with
either data type.

Pull Request: https://projects.blender.org/blender/blender/pulls/126316
2024-09-27 14:39:01 +02:00
Christoph Lendenfeld
95b6cf0099 Anim: operator to move Slots to new action
This adds an operator that moves slots of slot channels selected in
the channel box to a new action.

All slots are moved together into that new action instead of
moving them into separate actions.
I think that's more reasonable because that way the "move slots into separate actions" is
still possible by selecting the slots one by one.
The "explode action" operator that does just that can be a separate operator.

The new action is named after the slot for the case when only one slot is moved.
When multiple slots are moved, the name "CombinedAction" is used.

This also adds a menu entry "Action" to the action editor.

Pull Request: https://projects.blender.org/blender/blender/pulls/128171
2024-09-27 14:34:24 +02:00
Pratik Borhade
59aaf322ba GPv3: Select operations in sculpt mode
Select panel is missing when any selection mask is selected.
Also fix the poll function so operators can be accessed.

Pull Request: https://projects.blender.org/blender/blender/pulls/128177
2024-09-27 13:23:02 +02:00