Commit Graph

116948 Commits

Author SHA1 Message Date
Pratik Borhade
ac27bd16db Fix: Grease Pencil: Debug build error when armature is parent
Error is about accessing value of nullopt optional `vert_coords_prev`.
This occurs when armature is parented to grease pencil object.

Pull Request: https://projects.blender.org/blender/blender/pulls/134016
2025-02-04 11:12:40 +01:00
Jeroen Bakker
d486c8f655 Fix: Image Engine: Incorrect size push constant
Detected when running OpenGL compositor tests. The far near distances
push constant only attached a single float in stead of two. Fixed by
using float2.

Pull Request: https://projects.blender.org/blender/blender/pulls/134019
2025-02-04 09:50:01 +01:00
Jeroen Bakker
7f04a4fef3 Fix: Vulkan: Stalling shader compilation
This PR fixes an issue that shaders compilation could stall. This could
be seen in the viewport (sometime not showing first EEVEE render) but
was more prominent when running test cases.

Pull Request: https://projects.blender.org/blender/blender/pulls/134020
2025-02-04 09:49:28 +01:00
Philipp Oeser
2a9b3573f5 Fix #131830: context.property missing prefix to struct
Caused by 59dc67974a

The behavior of `RNA_path_from_ID_to_property` /
`RNA_path_from_ID_to_property_index` is that it only gets the "prefix"
of the struct -- the one we are looking for, the one that is missing
here -- if we feed it the `newptr` since it calls
`RNA_path_from_ID_to_struct(ptr)` to get that prefix.
If we feed it the **ID** pointer it will be empty (makes sense it would
basically be "path from ID to ID"...we need it to be "path from ID to
constraint").

Pull Request: https://projects.blender.org/blender/blender/pulls/133977
2025-02-04 09:37:35 +01:00
Omar Emara
e53ac805af Compositor: Avoid redundant output computations
This patch allows the compositor context to specify exactly which
outputs it needs, selecting from: Composite, Viewer, File Output, and
Previews. Previously, the compositor fully executed if any of those were
needed, without granular control on which outputs are needed exactly.

For the viewport compositor engine, it requests Composite and Viewer,
with no Previews or File Outputs.

For the render pipeline, it requests Composite and File Output, with
node Viewer or Previews.

For the interactive compositor, it requests Viewer if the backdrop is
visible or an image editor with the viewer image is visible, it requests
Compositor if an image editor with the render result is visible, it
requests Previews if a node editor has previews overlay enabled. File
outputs are never requested.

Pull Request: https://projects.blender.org/blender/blender/pulls/133960
2025-02-04 08:34:48 +01:00
Campbell Barton
46e393e9b8 Refactor: pass in context arguments to view3d minmax functions
Remove the bContext argument from view3d_calc_minmax_{visible/selected},
this ensures only input arguments are used.
2025-02-04 18:14:00 +11:00
Sean Kim
8911d7136c Fix: BRUSH_INVERT_TO_SCRAPE_FILL flag applies for too many brushes
The `BRUSH_INVERT_TO_SCRAPE_FILL` check inside `brush_flip` applies to
any brush instead of just the Fill and Scrape brush, this means that if
an asset is in a weird state where the user has enabled this flag but
switched away from the brush type, the flag still applies even though
the option is no longer visible.

This commit checks the brush type to ensure it only applies to the
specified types.

Pull Request: https://projects.blender.org/blender/blender/pulls/134014
2025-02-04 07:10:00 +01:00
Campbell Barton
ebc918c717 Cleanup: use "ndof_" prefix for RegionView3D rotation & angle
These values are only ever used by NDOF, name them accordingly.
2025-02-04 15:20:32 +11:00
Campbell Barton
95393726b0 Cleanup: quiet check_spelling_* warnings 2025-02-04 14:43:20 +11:00
Campbell Barton
7a783269bb Fix error setting image pack/unpack poll message
Error in [0] to fix #131894 caused the poll message to be ignored.

[0]: 35a4b2ca69
2025-02-04 14:40:56 +11:00
Pratik Borhade
dc90b65689 Fix #92406: Cannot set new hotkey to transfer sculpt mode
New shortcut assigned to operator goes inside "object mode" keymap
intead of `non-modal`. Now fixed with extra condition, since this
operator works in non-object modes. Reason it fails with "object
mode" keymap is the keymap->poll function `object_mode_poll`.

Pull Request: https://projects.blender.org/blender/blender/pulls/133796
2025-02-04 03:45:31 +01:00
Pratik Borhade
9ddf63aa83 Fix #133912: Outliner elements faded when contents filter is disabled
Actually a mistake in f4f2248a9c. `TE_CHILD_NOT_IN_COLLECTION`
flag is set on tree elements if they belong to different collection. Use
this flag instead to grey out the tree element.

Pull Request: https://projects.blender.org/blender/blender/pulls/133962
2025-02-04 03:27:34 +01:00
Gilberto.R
2c049fcc55 UI: Show successful export notification for obj, ply and stl
Report that the file has been successfully exported for obj, ply and stl exports.

Pull Request: https://projects.blender.org/blender/blender/pulls/133940
2025-02-04 03:01:35 +01:00
Germano Cavalcante
1a362429e8 Knife: Improve precision at knife line intersections 2025-02-03 20:16:55 -03:00
Germano Cavalcante
1aaf16641a Refactor: Knife - Pass 'mval' and related as params instead in the struct 2025-02-03 20:16:54 -03:00
Germano Cavalcante
60c7c5483f Refactor: Knife - Remove redundant redraw calls
And avoid excessive calls to `knife_update_mval`, as this function is
computationally expensive
2025-02-03 20:16:54 -03:00
Sean Kim
adda1b085b Cleanup: Remove no longer relevant assert
Missed in 1b80125a67

With the above commit, this assert and comment is no longer relevant, we
now clean up `ustack->step_init` if it is set.

Pull Request: https://projects.blender.org/blender/blender/pulls/133993
2025-02-03 23:33:11 +01:00
Sean Kim
2ab8dd220a Cleanup: Rename plane.cc
Pull Request: https://projects.blender.org/blender/blender/pulls/134005
2025-02-03 23:31:55 +01:00
Jesse Yurkovich
ad242d3397 Cleanup: Fix warning for copying SdfPath variables
Pull Request: https://projects.blender.org/blender/blender/pulls/134006
2025-02-03 23:29:14 +01:00
Sean Kim
108e64a481 Revert "Cleanup: Remove duplicated header include"
This reverts commit 8363dd6c0d.
2025-02-03 13:36:15 -08:00
Sean Kim
8363dd6c0d Cleanup: Remove duplicated header include
Pull Request: https://projects.blender.org/blender/blender/pulls/133990
2025-02-03 21:47:14 +01:00
Sybren A. Stüvel
226486aa91 Refactor: Anim, rename and adjust ActionKeyframeStrip.channels()
Rename `ActionKeyframeStrip.channels()` to `.channelbag()`, and change
its first parameter from `slot_handle` to `slot`.

This is to be consistent with `ActionKeyframeStrip.channelbags`, which is
the array of channelbags in the keyframe strip. Having a function that's
singluar makes sense for finding a single element in the array.

The change from using the slot handle to using the slot is to be consistent
with `.channelbags.new(slot)`. Furthermore, the Python API should be using
slot handles as little as possible (they're basically meaningless numbers).
Using the slots directly is preferred. If that's not possible, it is
recommended to use the slot identifier (`slot.identifier`) instead, as that
can be used to look up the slot (`action.slots[slot_identifier]`).

This breaks the glTF add-on, which will be fixed in !133915.

Pull Request: https://projects.blender.org/blender/blender/pulls/133868
2025-02-03 20:19:00 +01:00
Hans Goudey
4e18ebee1b Cleanup: Make paint BVH update tags proper private members
Move some functions to be methods of pbvh::Tree instead.

Pull Request: https://projects.blender.org/blender/blender/pulls/133989
2025-02-03 19:36:33 +01:00
Julian Eisel
7d54bfb49c Refactor: Asset system function to get asset libraries as RNA enum
We need some more control through the API here, e.g. for #132747. I
rather make things very explicit on the API calling side.
2025-02-03 19:08:09 +01:00
Clément Foucault
7bdafde54c Fix #133138: Overlay: Assert displaying subdiv surface modifier in edit-mode
The cause was that the shader was expecting both `pos` and `nor`
attribute but only one would be extracted.
This is because the mesh has cage display on but the batch cache
wouldn't extract the `vbo.vnor`.

This patch just make sure the vertex normal just follow the same
condition as the other edit normals batches.
2025-02-03 19:04:05 +01:00
Clément Foucault
b0980a1419 Fix: Overlay: Edit Mesh: Fix normal display with GPU subdivision
Make sure the gpu subdiv shader variant is only used if there
is no cages as the requested batch has a different layout in
this case.

Also add the missing shader variant for vertex normal display
with GPU subdiv.
2025-02-03 19:04:05 +01:00
Clément Foucault
724a065cdc Fix: Overlay: Edit mesh normals display not writting to line buffer
Shader was missing a framebuffer output.
Similar to 58cb2e43a1
2025-02-03 19:04:05 +01:00
Jesse Yurkovich
6c11811710 Cleanup: USD: Use the SdfPath type rather than a std::string
Instead of converting to a string immediately, only convert to a string
when necessary, like for trace logging. This reduces the size of the
`USDPrimReader` base class by 24 bytes, makes several Vectors and Maps
smaller at runtime, and reduces some unnecessary string allocations and
conversions in various other places.

The recently added python Hook `get_prim_path` dictionary will now
contain `SdfPath` objects rather than strings; removing the string
conversion cost when calling other USD APIs like `GetPrimAtPath` which
take in `SdfPath` objects to begin with.

This also makes the code a bit more self explanatory since the type
makes it clear what kind of path you are dealing with.

Pull Request: https://projects.blender.org/blender/blender/pulls/133954
2025-02-03 18:44:07 +01:00
Bastien Montagne
35a4b2ca69 Fix #131894: Linked images can be upacked and file-browsed.
Add proper checks for editable ID to image pack/unpack and file_browse
operators.

Also add similar check to `unpack_item` operator, although in that case
the check has to happen in exec callback, as poll function would not
have required info.
2025-02-03 18:29:14 +01:00
Hans Goudey
1d599b0073 Fix: MSVC build error after recent cleanup 2025-02-03 11:56:18 -05:00
Hans Goudey
e0f44dc8af Fix #133937: Grow/Shrink Visibility missing draw data update
Missing part of b77ff173b0.
2025-02-03 11:33:18 -05:00
Julian Eisel
0225c4635d Cleanup: Remove redundant asset loading icon handling
Since 1f88645728 the loading icon is managed by the UI code, no need to
explicitly set it here.
2025-02-03 16:49:17 +01:00
Hans Goudey
2ea843d141 Cleanup: Remove redundant default constructor assignment
`FindClosestData` already has a default constructor, `= {}`
is unnecessary.
2025-02-03 10:43:15 -05:00
Hans Goudey
5754b28807 Fix #133942: Incorrect curve domain selection comparison
Missing change in ae1a1335b9.
2025-02-03 10:43:15 -05:00
Jeroen Bakker
dda23c53f8 Metal: Add native tile input to workarounds
Native tile input wasn't part of the MTLCapability struct, but stored locally
in the shader generator and checked in MTLFramebuffer. This PR moves it
to the MTLCapability struct and disables it when workarounds are forced.

Pull Request: https://projects.blender.org/blender/blender/pulls/133818
2025-02-03 16:36:15 +01:00
Julian Eisel
4755503356 UI: Draw subtle background for preview items in menus
Draw a subtle background to make individual parts of each item feel more
connected. E.g. showing loading icons or labels might make it feel like
a bunch of floating icons/labels.

Suggested in #133880.

Pull Request: https://projects.blender.org/blender/blender/pulls/133980
2025-02-03 16:11:55 +01:00
Julian Eisel
1f88645728 UI: Draw loading icon while previews load
Show a dimmed loading icon while previews are being loaded in a
background thread. The asset shelf and asset/file browsers do this
similarly already.

This is implemented in drawing code, so the loading icon will always
appear when an in-progress preview is being drawn. I experimented with
doing this in `ui_def_but_icon()`, but this won't update correctly with
popups that don't support full refreshing.

This also makes any normal icon that is drawn as preview use the normal
icon size. These icons are usually made for smaller sizes and look very
outblown when displayed at the size of a preview. Yet it's useful to
sometimes pass a normal icon. E.g. for the asset shelf we would already
draw the data-block type icon in place of the preview if there was no
preview to display, and we'd use the normal, smaller size already.
Larger can still be drawn differently.
I don't know of any current cases this would affect though.

Pull Request: https://projects.blender.org/blender/blender/pulls/133880
2025-02-03 16:03:06 +01:00
Bastien Montagne
5c1749f7b7 Refactor: Move 'need link' and 'need expand' ID tags to runtime readfile data.
Also adds a new `BLO_readfile_id_runtime_tags_for_write` accessor to
ensure readfile data is created before assigning a tag value.

Followup to 2ec1b6887d. Should cover the last existing ID tags that
can be moved to temp runtime readfile ID data.

This reverts commit aff2cf97a1, and re-apply 2612b27e42 fix the issue
fixed.
2025-02-03 15:18:19 +01:00
carnaval
0e7924ac25 Fix: add missing dependencies for object and collection value nodes
The new Object and Collection constant geometry nodes do not register their dependency on their targets.
This causes the graph not to update properly when they are modified.

Pull Request: https://projects.blender.org/blender/blender/pulls/133784
2025-02-03 15:16:07 +01:00
Jacques Lucke
7c011440c6 Fix #133925: crash when removing animated input socket 2025-02-03 15:14:38 +01:00
Clément Foucault
f4a214166e Fix #133754: Overlay: Geometry Nodes viewer displays blue color for instances
Shader was missing a framebuffer output.
Similar to 58cb2e43a1

On top of that was that the push constant was not
using the right overload.
2025-02-03 15:00:08 +01:00
Nathan Vegdahl
978011fe43 Anim: use legacy names for data created via legacy APIs
Previously, when use of the legacy Action APIs (specifically the `fcurves` and
`groups` properties) caused a new Slot to be created, it would be named "Slot".

This PR changes things so that Slots created that way are named "Legacy Slot",
just like Slots from upgraded legacy Actions.

The rationale is that Slots created in this way are expected (by the code that
created them) to be used as if the Action were still a legacy Action, and it's
good to reflect that in the name of the data. This also makes it clearer to
users when e.g. scripts and addons they're using may not yet have been updated
to fully work with Slotted Actions.

For consistency, this PR also names Layers created in the same way "Legacy
Layer", the same as Layers from upgraded legacy Actions.

Pull Request: https://projects.blender.org/blender/blender/pulls/133888
2025-02-03 14:48:39 +01:00
Clément Foucault
3929a37786 Fix #131506: EEVEE: GP disappear when resolution scale > 1
Now EEVEE outputs the in-progress render depth buffer
for GPencil to intersect with.

The overlays will clear the depth buffer in such situation
and still do the depth prepass for correct intersection.

Moreover, this patch makes overlay engine not requiring
a depth prepass when run with EEVEE at 1:1 render resolution.
This avoids significant overhead of the depth prepass.

Pull Request: https://projects.blender.org/blender/blender/pulls/133971
2025-02-03 14:45:46 +01:00
Clément Foucault
aa8769599c Fix #133775: Overlay: curve attribute is not showing any color in viewport
The curves wireframes should not have any offset applied to them.
This avoid the attribute overlay failling the equal depth tests.
2025-02-03 14:25:00 +01:00
Janne Nylander
b16e7dec28 Grease Pencil: Make "Hide Others" layer operator take layer groups into account
The old behavior for the "Hide Others" operator was to show the active layer, hide the
other layers and not do anything about layer groups. If the active node was a
layer group, nothing would be done.

This new behavior will act based on the active nodes type:
- If the active node is a layer, show active layer and parenting layer groups
- If the active node is a layer group, show all child nodes (layers and layer groups)
  and parenting layer groups

Pull Request: https://projects.blender.org/blender/blender/pulls/133893
2025-02-03 14:07:56 +01:00
Clément Foucault
58cb2e43a1 Fix #133680: Overlay: Poor wireframe quality in Edit mode for NURBS Surface
`lineOutput` was missing from some shaders.

Pull Request: https://projects.blender.org/blender/blender/pulls/133974
2025-02-03 13:58:25 +01:00
Janne Nylander
53255bcf6c Grease Pencil: Make layer locking operator also affect layer groups
Currently, the "Lock all" and "Unlock all" operators only act on layers.

This pull request modifies the `grease_pencil_layer_lock_all_exec` function so
that instead of iterating over Layer of the grease pencil object, it iterates over
TreeNode objects, affecting both Layer and Layer Group objects.

Pull Request: https://projects.blender.org/blender/blender/pulls/133838
2025-02-03 13:14:41 +01:00
Julian Eisel
7acd7e1246 UI: Rewrite asset shelf preview loading
- Fixes preview flickering on actions like undo/redo in the asset shelf (#93726), not yet for the
  file browser.
- Fixes #130861.

Makes the asset shelf use the asynchronous preview loading system of the UI instead of the file
browser one. The issues above where mostly caused by the file browser caching design.

The asset system and its UIs can now manage previews independently of the file browser back-end.
This is another step towards making the asset system independent of the file browser, see
https://developer.blender.org/docs/features/asset_system/fundamentals/from_file_browser_to_asset_system/.
Code to query asset previews through file browser types is removed.

Quite some work was done to prepare the UI preview system for this, to make it on par with the file
browser preview system. E.g.: 9d83061ed4, 315e7e04a8, 5055adc1c0, 16ab6111f7.

Note that the same change should be done to the asset/file browser, but this requires more work.

Pull Request: https://projects.blender.org/blender/blender/pulls/131871
2025-02-03 13:13:53 +01:00
Omar Emara
2d1e64d32d Fix: Simple Star glare fails in Metal GPU back-end
The Simple Stare glare code writes and reads from the same image in the
same invocation, so we need to insert a fence after the writes.

This is not very efficient, and we can probably use a single fence
between the causal and anti-causal passes. But this can be implemented
later as an optimization.

Pull Request: https://projects.blender.org/blender/blender/pulls/133968
2025-02-03 13:05:46 +01:00
Nathan Vegdahl
b5005cd99c Anim: make RNA Slot.target_id_type writable when not yet specified
When loading old blend files, versioned Actions can end up having a slot with an
'UNSPECIFIED' `target_id_type`. Assigning the slot to an ID will then set the
slot's `target_id_type` to match the type of the ID, but there was previously no
way to directly set it via Python if needed.

This PR changes the writability of `target_id_type` to match the extent of its
mutability when assigning a slot to an IDs. Which is to say, it can be set if
it's 'UNSPECIFIED', but not otherwise.

RNA doesn't have a good way to represent this, so we accomplish this with a
custom set function that simply ignores the write if the slot's `target_id_type`
isn't 'UNSPECIFIED'. This isn't ideal, but is the least-bad solution at the
moment.

Pull Request: https://projects.blender.org/blender/blender/pulls/133883
2025-02-03 13:01:47 +01:00