Commit Graph

122717 Commits

Author SHA1 Message Date
John Kiril Swenson
4bdcc7643b Fix: VSE: Silence RNA_boolean_get warning for use_sequence_detection
Caused by #143974.
Allow `use_sequence_detection` and `use_placeholders` to be
automatically drawn by `sequencer_add_draw_check_fn` when applicable
instead of unconditionally adding it to the UI.

Ordering of these two can be preserved by swapping the original
`RNA_def_boolean` calls.

Pull Request: https://projects.blender.org/blender/blender/pulls/145431
2025-08-30 00:27:10 +02:00
Sean Kim
8188dbd246 Paint: Change brush size values to represent diameter
This commit changes the internal storage and user-facing representation
of the brush size values (`size` and `unprojected_size`) from radius
to diameter.

This has a number of benefits:
* While the radius is more helpful for many internal operations, it is
  more natural to estimate the size of a brush by the diameter
* Because the pixel size is stored as an integer, users are currently
  unable to make brushes that have an odd numbered diameter, notably
  preventing the ability to make single pixel brushes.

Internally, the `Brush` and `UnifiedPaintSettings` size values are
versioned to double their on-disk values. The relevant `BKE` functions
that access the data return the radius at runtime, and any internal
`struct`s that stored radius continue to do so.

The 'Radius' text for brushes is changed to 'Size' and all references
to it in descriptions are changed to 'size' as well.

Resolves #134204

Pull Request: https://projects.blender.org/blender/blender/pulls/142495
2025-08-30 00:18:41 +02:00
Nika Kutsniashvili
cb22938fe9 UI: Theme: Move keyframe properties to common
Continuing #140360

This PR moves keyframe theme properties from editors into Common.
Besides Dope Sheet, keyframe properties were in:

- Sequencer (almost all types, and might use more in the future)
- 3D Viewport, where the active object name overlay used a separate Object Keyframe color when
it had keyframes on the current frame. Now it uses the common Keyframe Selected color, instead
of having its own property just for this little text.
- Keyframes in Movie Clip Editor were hard-coded white, now they use a common Keyframe color.
Selected colors used wrong long key selected color, now they use common Keyframe Selected color.
- Movie Clip Editor also used separate colors for what it called "Strips", but they are visually
the exact same thing as "long keys" in Dope Sheet, so they use common long key colors now.

There are Keyframe Border properties in Dope Sheet, Sequencer, and NLA, but they're not shared
because they're drawn on very different backgrounds, in different sizes, with different fill colors, so
it's difficult to make one color work for all of them, and it can restrict customization and accessibility.

Video in PR

---

Details:
- Long keys in Dope Sheet/Clip Editor and Strips in NLA used the same internal "strip" attribute.
Those needed to be separated to properly use long key colors in common, without worrying
about affecting unrelated things, and those two are as unrelated as they can get.
To properly separate them I added new "long_key" attributes, and corresponding
`TH_LONGKEY` and `TH_LONGKEY_SELECT`.
- Long keys in Movie Clip Editor had hardcoded alpha. Now they use alpha of the theme color.

Pull Request: https://projects.blender.org/blender/blender/pulls/144259
2025-08-29 23:22:38 +02:00
Jesse Yurkovich
9f4ac95357 Fix: USD: Camera FStop of 0 means no depth of field
If a USD camera has an fstop value of 0, we need to treat that as
meaning DOF should be disabled (and animate it accordingly).

https://openusd.org/release/api/class_usd_geom_camera.html#a335e1647b730a575e3c0565e91eb8d49

Pull Request: https://projects.blender.org/blender/blender/pulls/145366
2025-08-29 22:33:10 +02:00
Sean Kim
c84b81003f Refactor: Use container types for Subdiv face_ptex_offset
This commit changes the face_ptex_offset from a manually managed int
array to a blender::Array. This required a number of changes:

* The `Subdiv` struct is no longer trivial, so MEM_new and MEM_delete
  need to be used
* The Draw module API has an overloaded set of `origindex_buffer`
  methods created to take in a Span instead of an int pointer and size

Pull Request: https://projects.blender.org/blender/blender/pulls/141702
2025-08-29 21:52:19 +02:00
Alaska
e86bff3621 Fix: UI: Correct spelling of Bézier in Curves add menu
Pull Request: https://projects.blender.org/blender/blender/pulls/145338
2025-08-29 20:00:05 +02:00
Bastien Montagne
1ea8708153 Fix (unreported) wrong handling of system-defined IDProperties in RNA.
In RNA access code, when trying to 'decode' a given property into valid
data, if the existing storage IDProperty for a runtime-defined RNA
property was detected as invalid (e.g. wrong dimensions for an
array...), code was trying to remove that property from the user-defined
IDProperties (custom properties) instead of the system ones.

Mistake from the original IDProperty split commit (7276b2009a).
2025-08-29 18:47:37 +02:00
Miguel Pozo
58fb8e86eb Fix #145321: Crash with Viewer Node on Values without Geometry
Don't init duplis if `dupli_list` is empty.
Otherwise, the `data->dupli_parent` "leaks" into the next objects.

This also asserts that dupli iteration properties are set to default
values when calling `deg_iterator_duplis_init`.

Pull Request: https://projects.blender.org/blender/blender/pulls/145407
2025-08-29 18:43:55 +02:00
Hans Goudey
ae53dc3a60 Sequencer: Avoid storing un-tracked pointers in blend files
Currently, sequencer structs contain several pointers to data within
other structs. These pointers need to be remapped as the structs are
reallocated when reading from blend files. That has worked so far
because the pointers are exactly the values from the Blender session
that saved the file. With the implementation of #127706, the pointers
in the file aren't "real" anymore, and we can't offset them to get the
struct that contained the data. I'm working on the pointer stability
solution now to address a memfile undo performance regression
in 5.0 due to the `AttributeStorage` read/write design.

This commit replaces these 4 mid-struct pointers to point to the
containing strips instead, and uses some trivial logic to access the
fallback root sequence channels and strips. This makes the pointer
remapping on file load possible again.

This change is backward compatible but not forward compatible.

Second try after #144626

Pull Request: https://projects.blender.org/blender/blender/pulls/144878
2025-08-29 16:58:08 +02:00
YimingWu
2529b79486 Fix #145228: Wrong material when copying grease pencil strokes
When copying grease pencil strokes, `BKE_object_material_get()` was used
to retrieve the material ID, but the index starts at 1 instead of 0,
this caused the pasted material to be wrong. Now the index is properly
incremented to 1 when copying.

Pull Request: https://projects.blender.org/blender/blender/pulls/145398
2025-08-29 16:39:05 +02:00
Philipp Oeser
a82d09bee4 Fix #145391: File Output node: "Layers" uilist button is misaligned
Caused by 7d7562e849

Above commit added a `separator_spacer` (for no obvious reason?)
This PR removes it again.

Pull Request: https://projects.blender.org/blender/blender/pulls/145397
2025-08-29 16:13:12 +02:00
Julian Eisel
51e3884ee6 Fix: Typo in ID full name RNA description 2025-08-29 15:59:00 +02:00
Miguel Pozo
18b7b64dd4 Fix #145396: Selection doesn't consider viewport visibility
Missing check.
Regression from 8adb3e758f
2025-08-29 15:44:37 +02:00
Julian Eisel
5669adf7e6 Fix #145388: Pose library breaks double-click in file browser
The pose library registered a double-click keymap item for the file
browser keymap, because that was the only way to add keymap items to the
asset browser (which is just the file browser under the hood). Since
450f428434, the pose library apply & blend operators are available in
more contexts, since their check for an active asset was moved from the
operator poll to the operator execution. So the pose apply operator
would end up triggering.

The poll function could be adjusted somehow to return false in this
case, e.g. by checking if it's executed from a file browser (not an
asset browser).

However, the operator should be independent of where it's called from.
So instead this registers a separate keymap for the asset browser, so
the pose library operators can be registered exclusively for the asset
browser.
2025-08-29 14:58:40 +02:00
W_Cloud
5ded9257ab Fix: Nodes: navigate to top level shader tree from Material/World breadcrumbs
Support navigate to top level shader tree from Material/World breadcrumbs.
This appears to be an oversight in #141292.

Pull Request: https://projects.blender.org/blender/blender/pulls/144940
2025-08-29 14:45:55 +02:00
Campbell Barton
9ff2ccd350 Fix: incorrect handling of 3x3 matrices with RNA get/set callbacks
Thanks to @mont29 for spotting the error.
2025-08-29 22:16:39 +10:00
Lars-Helge-Scheel
4387255868 Fix #145375: Crash in Viewport Render Animation
Initialize pointer earlier in case the thread starts very quickly and
accesses it.

Introduced in 627114ee54

Pull Request: https://projects.blender.org/blender/blender/pulls/145376
2025-08-29 13:56:37 +02:00
Jeroen Bakker
246c01037f Refactor: Move Vulkan descriptor pools
Moves the descriptor pools from resource pools to thread data.

The descriptor pools uses a recycling approach and don't need
to be guarded anymore inside a resource pool. Now only the
descriptor set tracker is inside the resource pool.

Pull Request: https://projects.blender.org/blender/blender/pulls/145393
2025-08-29 13:33:35 +02:00
Falk David
fefeb939a2 Fix: Outliner: Not using sequencer scene in various places
The outliner was not using the correct sequencer scene
for some places including:
* strip selection & selection sync
* strip hiding & unhiding

Found while looking into #145206.

Pull Request: https://projects.blender.org/blender/blender/pulls/145250
2025-08-29 12:49:58 +02:00
YimingWu
af700685e7 Fix #145259: Grease Pencil: Bail when no frame is selected for SVG export
Previously `SVGExporter::export_scene` can work on a empty `frames`
index mask, causing crash. Now it will exit early when no frames are
selected, and it will show a warning to the user.

Pull Request: https://projects.blender.org/blender/blender/pulls/145286
2025-08-29 12:03:29 +02:00
Falk David
1fe5096101 Fix #145206: Outliner not using the sequencer scene to show strips
The outliner was still using the active scene to show the sequencer
strips in the VSE mode.

This adds the workspace to the `TreeSourceData` so that
the `TreeDisplaySequencer` can read the sequencer
scene.

Note that more places need to be fixed to make this mode
work correctly again.

Pull Request: https://projects.blender.org/blender/blender/pulls/145247
2025-08-29 10:38:11 +02:00
Campbell Barton
38b13f7aa8 Fix: uninitialized memory use in RNA slice assignment
Resolve run-time error caught by UBSAN & script_pyapi_prop_array test.
2025-08-29 07:27:40 +00:00
Jeroen Bakker
8d40ecbf85 Cleanup: GPUFramebuffer variable names
The internal wrap/unwrap functions used vert as variable names. Should
be framebuffer.
2025-08-29 08:59:01 +02:00
Campbell Barton
9e72f27717 Cleanup: unused variable warnings 2025-08-29 14:40:48 +10:00
Campbell Barton
95990fdfe3 Cleanup: typo in VFontToCurveIter struct member 2025-08-29 13:45:59 +10:00
Campbell Barton
6d92bf00a6 Cleanup: use float2 for some 3D text logic 2025-08-29 03:40:33 +00:00
Campbell Barton
6c7513b9ac Cleanup: spelling (make check_spelling_*) 2025-08-29 11:27:33 +10:00
Sean Kim
d124f95311 Refactor: Deduplicate Paint BVH source of truth for position cache access
This commit refactors the relevant code to extract the
logic of determining which cache to use into a centralized location to
avoid missing updates happening in the future.

Pull Request: https://projects.blender.org/blender/blender/pulls/143580
2025-08-29 00:22:36 +02:00
Sean Kim
47362112a6 Fix #145305: Crash on loading file from 1.7x
Introduced in 7f3aa617ce

Pull Request: https://projects.blender.org/blender/blender/pulls/145369
2025-08-28 23:24:17 +02:00
Sean Kim
f074e3529d Cleanup: Remove unused 'DispOp' enum
Pull Request: https://projects.blender.org/blender/blender/pulls/145289
2025-08-28 22:47:06 +02:00
Hans Goudey
b60835e2b4 UI: Remove node socket icons from attribute and grid type enums
Added in 8d6c717e34

These enums are unrelated to nodes. The fact that nodes reuse the
enum property items is an implementation detail that shouldn't leak.
Currently it causes the type dropdown in the "Add Attribute" operator
to be full of node socket icons.

At a data level it is also not clear that these should have node socket
colors, even in geometry nodes. Arguably it's important to distinguish
between attribute types and socket types, especially since some
attribute types cannot be explicitly passed around by node links.

For now, revert the parts of that commit that added node socket icons
in areas unrelated to the node editor. If we're going to do that it needs
proper consensus and a more complete design.
2025-08-28 15:33:24 -04:00
Jesse Yurkovich
6b2463c2b6 Cleanup: Formatting 2025-08-28 11:20:56 -07:00
Hans Goudey
c01d4a4ee6 Refactor: Deduplicate position transform utilities
The pattern of transforming many position vectors at once is quite
common, both with separate source and result arrays, and when modifying
an array in place. In some cases at least we used a separate function
with a consistent name across files, but there were also many duplicate
parallel transform implementations.

This commit adds these utilities to the BLI_math_matrix.hh API and uses
them where many positions from contiguous arrays are transformed at
once. While there might be a more ideal location for these utilities,
it's consistent with 3936d7a93e, and certainly better
than duplicating them.

This also reduces binary size of my build by 15 KB.

Pull Request: https://projects.blender.org/blender/blender/pulls/145352
2025-08-28 19:27:17 +02:00
Hans Goudey
fbaf6d42f0 Grease Pencil: Avoid repeated attribute lookup in origin set operator
Don't look up the position attribute for every single point.
2025-08-28 19:27:16 +02:00
Hans Goudey
d74c033a9d Cleanup: Remove else after return in grease_pencil_io.cc 2025-08-28 19:27:16 +02:00
Nika Kutsniashvili
ea47231a7b UI: Make selected track color in Movie Clip Editor themeable
Selected tracks in the Movie Clip Editor's Dope Sheet used hard-coded color.
Added a new theme property for them, and previously hard-coded color is now just a default.

Pull Request: https://projects.blender.org/blender/blender/pulls/144265
2025-08-28 19:12:11 +02:00
Bastien Montagne
fa61e3b9b8 Clenaup/Fix: Missing handling of ObHook::parent Object pointer.
While handling this pointer is technically not needed in `foreach_id`
code (and likely never will be), better not rely on such undocumented
implicit specifics, and instead properly handle it there, with comments
and asserts explaining why it should not be actually executed in current
code.

Pull Request: https://projects.blender.org/blender/blender/pulls/145345
2025-08-28 18:05:54 +02:00
YimingWu
02737c7b93 LineArt: Allow curves objects to be loaded into calculation
When line art is first developed, curves objects does not exist yet, now
it is added to line art so it will be read and take part in feature line
generation and occlusion tests.

This patch also adds "Line Art" panel for curves object, just like other
objects supported by line art.

Pull Request: https://projects.blender.org/blender/blender/pulls/145296
2025-08-28 17:28:47 +02:00
Harley Acheson
9e0ef26686 Fix #145186: Allow opening non-existing blend from command line
The PR restores the old behavior (after the changes in #139128) so that
specifying a path to a non-existing blend file will load Blender with
default blend default and with that name assigned. Paths to non-blend
files will load blender but then give the new warning message.

Pull Request: https://projects.blender.org/blender/blender/pulls/145274
2025-08-28 16:48:45 +02:00
Jacques Lucke
20956c69fa Fix: Nodes: crash when opening files with closure and bundle nodes saved in 4.5
This adds support for opening "invalid" files containing closure/bundle nodes that have
first been saved with 5.0, then resaved with 4.5. Note that loading them in 4.5 only works
after #145337.

Pull Request: https://projects.blender.org/blender/blender/pulls/145333
2025-08-28 16:31:33 +02:00
Omar Emara
5cabc57af0 Compositor: Optimize nodes with Boolean and Menu inputs
This patch optimizes nodes with Boolean and Menu inputs for GPU
execution. This is done by using constant links instead of uniforms for
those inputs. This will cause shader recompilation, but is okay since
those inputs rarely change.

Pull Request: https://projects.blender.org/blender/blender/pulls/145329
2025-08-28 16:00:58 +02:00
Omar Emara
fdf95b53fa Compositor: Add Convolve node
This patch adds a simple Convolve node to the compositor.

Pull Request: https://projects.blender.org/blender/blender/pulls/144619
2025-08-28 15:58:39 +02:00
Campbell Barton
90a55a3e0b Fix: walk/fly causing RegionView3D::viewquat not to be normalized
Prevent this issue reported by: #125586 from happening in new files.
2025-08-28 23:22:27 +10:00
Campbell Barton
9774ebfe30 Cleanup: remove unnecessary nested block from walk/fly logic 2025-08-28 23:22:27 +10:00
Philipp Oeser
81c259d49b Fix #145300: Value node displayed value has an offset to the right
Caused by d7fa455e66

Due to an earlier experiment to get right alignment, above commit left a
space in the text (this was later solved by using
`UI_ITEM_R_SPLIT_EMPTY_NAME`, but... for this one node, the name was not
actually empty then...)

Pull Request: https://projects.blender.org/blender/blender/pulls/145303
2025-08-28 15:11:21 +02:00
Jacques Lucke
20b2ec5cdf Fix #145103: incorrect socket usage for built-in menu sockets
The socket usage of built-in menu sockets did not take into account if any of the
outputs of the node were actually used.

Pull Request: https://projects.blender.org/blender/blender/pulls/145162
2025-08-28 14:28:14 +02:00
Falk David
fff8834213 Fix #145297: Grease Pencil crash when joining objects
The function was using the `BKE_id_material_len_p` with the ID
of the object rather than the object data ID, which is what the
function expects.

Instead make sure to use `BKE_object_material_len_p` to get
the right number of material slots.

Additionally use the correct slot in `BKE_object_material_get`
which is the index of the material + 1.

Pull Request: https://projects.blender.org/blender/blender/pulls/145323
2025-08-28 14:25:05 +02:00
Jacques Lucke
2e4d2ad5ab Refactor: BLI: reduce code size for virtual arrays
Previously, `VArrayImpl` had a `materialize` and `materialize_to_uninitialized`
function. Now both are merged into one with an additional `bool
dst_is_uninitialized` parameter.  The same is done for the
`materialize_compressed` method as all as `GVArrayImpl`.

While this kind of merging is typically not ideal, it reduces the binary size by
~200kb while being basically free performance wise. The cost of this predictable
boolean check is expected to be negligible even if only very few indices are
materialized. Additionally, in most cases, this parameter does not even have to
be checked, because for trivial types it does not matter if the destination
array is already initialized or not when overwriting it.

It saves this much memory, because there are quite a few implementations being
generated with e.g. `VArray::from_func` and a lot of code was duplicated for
each instantiation.

This changes only the actual `(G)VArrayImpl`, but not the `VArray` and `GVArray`
API which is typically used to work with virtual arrays.

Pull Request: https://projects.blender.org/blender/blender/pulls/145144
2025-08-28 14:24:25 +02:00
Clément Foucault
998655f4d9 Cleanup: Metal: Remove unused struct
This is no longer necessary since we do not use geometry shader
workarounds.
2025-08-28 12:08:42 +02:00
Clément Foucault
8c7ba3579f GPU: Batch: Remove unused instance attributes
This has been completely replaced by SSBOs overtime.

This reduces API size and avoid untested/legacy path
in drivers that are known to break (see #134509).

Pull Request: https://projects.blender.org/blender/blender/pulls/145242
2025-08-28 12:07:41 +02:00