Commit Graph

152029 Commits

Author SHA1 Message Date
Germano Cavalcante
32a6e14d41 Fix #54325: Shrink/Fatten "Offset Even" can not be used as default
The default keymap item that triggers `Shrink/Fatten` uses the `Alt`
modifier, which coincidentally is the same key that toggles
`Offset Even`. What is undesirable.

The solution is to alternate between Alt Press and Alt Release
depending on the `Offset Even` property.

Pull Request: https://projects.blender.org/blender/blender/pulls/141904
2025-07-15 01:56:25 +02:00
Sean Kim
8feef54afa Refactor: Use C++ math type for ReshapeGridElement structs
Pull Request: https://projects.blender.org/blender/blender/pulls/141698
2025-07-15 00:01:12 +02:00
Sean Kim
a138106fac Cleanup: Remove unnecessary const and enum prefixes
Pull Request: https://projects.blender.org/blender/blender/pulls/141691
2025-07-14 23:58:26 +02:00
Jesse Yurkovich
cbb6cdf8d7 Fix #141633: Various subdivision problems during Alembic import
This fixes 4 bugs all conspiring to make the referenced SubD scenario
quite broken:

- When manually creating a MeshSequenceCache, the reading of edge and
  vertex crease data was skipped. Fixed by reading crease data inside
  the common `read_mesh` method.
- When importing an Alembic with animated edge or vertex crease data, a
  MeshSequenceCache modifier was not being added to the object. This was
  due to not checking the relevant crease properties and required adding
  a specialized `has_animations` function.
- When importing animated vertex crease data, a duplicate `vertex_crease`
  attribute would be created, breaking the animation. Fixed by using the
  attribute API rather than custom data.
- The MeshSequenceCache scenario would call into the Alembic Mesh reader
  which ended up referencing deallocated stack memory for the
  ImportSettings. In release builds this would cause sporadic failures
  because the value of `blender_archive_version_prior_44` would be
  random. There was already a very old TODO for this and we finally
  really needed to address it.

A new test was added which exports animated creases on two meshes and
re-imports them back in. It verifies that each mesh gets a
MeshSequenceCache modifier added and also ensures the values of the
creases are correct for all frames.

Pull Request: https://projects.blender.org/blender/blender/pulls/141646
2025-07-14 21:49:23 +02:00
Miguel Pozo
05dcc0377b Fix: GPU: Missing error logs
Regression from d5f84d0016.
2025-07-14 18:53:35 +02:00
Brecht Van Lommel
40339e3edd Merge branch 'blender-v4.5-release' 2025-07-14 17:39:16 +02:00
Brecht Van Lommel
c5df70a7d4 Fix #141779: Adaptive subdivision + custom OSL camera crash
This is not an actual solution, it falls back to a perspective camera instead
of crashing. Note full_rastertocamera exists specifically for computing raster
size for adaptive subdivision, and changing it should not affect anything else.

Pull Request: https://projects.blender.org/blender/blender/pulls/141905
2025-07-14 17:36:29 +02:00
илья _
aa147d5323 Tests: Geometry Nodes: Offset Corner in Face node invalid inputs
Mainly cover issue reported in #140234.

Pull Request: https://projects.blender.org/blender/blender/pulls/141855
2025-07-14 17:24:02 +02:00
Michael Jones
9d9d0a7259 Cycles: MTLAccelerationStructureUsagePreferFastIntersection on macOS>=26
macOS 26 introduces a new BVH usage hint: [MTLAccelerationStructureUsagePreferFastIntersection](https://developer.apple.com/documentation/metal/mtlaccelerationstructureusage/preferfastintersection?changes=_3&language=objc)

This will only be compiled if built with Xcode >= 26.

Pull Request: https://projects.blender.org/blender/blender/pulls/141891
2025-07-14 16:59:47 +02:00
Jacques Lucke
00c81f5113 Merge branch 'blender-v4.5-release' 2025-07-14 16:30:38 +02:00
Jacques Lucke
7f07124d30 Fix #141847: Input node properties missing in sidebar
This was caused by 87c011f8bb. The drawing code for the input nodes was moved
into a new `custom_draw_fn` callback on the socket declaration. This was not
taken into account when drawing the sidebar yet, which is an oversight and was
not an intentional change.

This fix applies to all the nodes that use the new custom draw function.

Pull Request: https://projects.blender.org/blender/blender/pulls/141872
2025-07-14 16:29:19 +02:00
Jacques Lucke
1f2f9aef51 Fix #141800: crash when showing node warnings during playback
The node warnings were only referenced by the tooltip function. Since they are
recreated on every evaluation, this resulted in a use-after-free. The fix is to
just copy the node warnings into the callback.

Of course this extra copy does have some performance implications, but I don't
think those are significant currently.

Pull Request: https://projects.blender.org/blender/blender/pulls/141875
2025-07-14 16:28:39 +02:00
Hans Goudey
c3181490f3 Cleanup: Formatting 2025-07-14 10:22:46 -04:00
YimingWu
4096309753 Fix #141819: Interface Use a flag for WM_set_locked_interface
Different operations may need to lock different part of the interface,
e.g. for rendering, the image editor may still need refreshing while the
interface is locked, but when baking data into a scene, the image editor
needs to be locked because it is not thread safe to get data from a
partially evaluated depsgraph.

This is a better fix on top of 7c8b8b2457
that addresses the root cause with more flexibility for future
operations that requires different interface locking strategy as
well.

Pull Request: https://projects.blender.org/blender/blender/pulls/141866
2025-07-14 16:17:46 +02:00
Sebastian Parborg
ad2e7434c8 Fix: Local method in versioning_500 was not static 2025-07-14 15:50:03 +02:00
Sybren A. Stüvel
cda4e0cfe6 Fix #141890: Join as Shapes should rebuild depsgraph relations
When the Join as Shapes operator created new shape keys, trigger a rebuild
of depsgraph relations. Otherwise mesh evaluation may see original keys
instead of evaluated ones.

Pull Request: https://projects.blender.org/blender/blender/pulls/141892
2025-07-14 15:09:30 +02:00
Bastien Montagne
159ea313f3 BPY: Add basic blendfile version info in data returned by bpy.data.libraries.load()
Only major and minor versions are available at that point, not the
blendfile subversion.

Version info is available in both `bpy_library` items returned by the
context handler, as a `version` property that is a tuple of two numbers.

Co-authored-by: Campbell Barton <campbell@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/141462
2025-07-14 14:43:08 +02:00
Nikita Sirgienko
609f8ddbef Cycles: oneAPI: Fix DPC++ level issues for multi GPU execution
These changes introduce modifications to the SYCL queue creation
in OneapiDevice::create_queue. In case several DPC++ devices are
detected by Blender and exposed through it, we are now creating
a new SYCL context for each device, which allows us to prevent
execution failures due to some known issues in the DPC++ runtime
regarding multi GPU support. As this would have some small
performance impact, few percents, it is only applied to
multi GPU configurations, while the behavior for a single
GPU configuration remains the same.

Pull Request: https://projects.blender.org/blender/blender/pulls/141834
2025-07-14 14:33:42 +02:00
Hans Goudey
81cf923fe3 Fix #141735: "Join as Shapes" operator too restrictive
Caused by 3d6ea7c075
Before that commit, it was possible to retrieve shape key data from
other objects with a different number of edges or faces. One crucial
case where that is important is when the other mesh is a triangulated
with otherwise the same vertex count.

In general it's better to be flexible and allow other changes besides
the vertex count, especially since that's such a simple check that users
can easily understand.

Pull Request: https://projects.blender.org/blender/blender/pulls/141794
2025-07-14 14:28:22 +02:00
Bastien Montagne
33973970a5 Fix #139527: LibraryOverride bug because of Hair Curves.
The 'surface' Object pointer of the new curves ID was not defined as
overridable, which would break liboverride hierarchies, which would then
be re-generated everytime on blendfile opening.
2025-07-14 12:51:26 +02:00
Sebastian Parborg
a172b40d56 PointCache: Remove support for LZO and LZMA compression, use ZSTD
LZO and LZMA is only used for compressing point caches inside of
Blender. As we already use ZSTD for compressing other data in Blender it
makes sense to remove LZO and LZMA to simplify our library requirements
(and lessen our library maintenance burden).

I've talked to Sergey about this and he suggested that I leave the LZO/LZMA
libraries and code around but effectively disabled until beta, so if there is a
huge uproar, we can easily reinstate the support.

Pull Request: https://projects.blender.org/blender/blender/pulls/141461
2025-07-14 12:51:04 +02:00
Brecht Van Lommel
c7ae49b99f Refactor: Cycles: Deduplicate get camera object code
Pull Request: https://projects.blender.org/blender/blender/pulls/141796
2025-07-14 12:29:09 +02:00
Brecht Van Lommel
a912102308 Merge branch 'blender-v4.5-release' 2025-07-14 12:25:00 +02:00
Brecht Van Lommel
0cda7fbacf Fix: Adaptive subdivision not updated when camera changes
Regression from ba5cf35d2a. Now that adaptive subdivision is not
excessively updated on all object changes, we need to specifically
check for this case.

Ref #141381

Pull Request: https://projects.blender.org/blender/blender/pulls/141886
2025-07-14 12:23:38 +02:00
Brecht Van Lommel
11246528b4 Fix #141798: Cycles adaptive subdivision doesn't interpolate vertex color
Corner colors were working, but not vertex colors.

Pull Request: https://projects.blender.org/blender/blender/pulls/141886
2025-07-14 12:23:09 +02:00
Sybren A. Stüvel
dbffebda30 Merge remote-tracking branch 'origin/blender-v4.5-release' 2025-07-14 11:45:56 +02:00
Falk David
45ab790e80 Grease Pencil: Initialize runtime drawing user counts on read
This adds a function `GreasePencil::count_frame_users_for_drawings()`
that computes the drawing user counts from the layer frames. This is used
to correctly initialize the runtime drawing user counts when reading the ID.

Note that we don't expose any functionality to instance drawings currently.
This change is also in preparation for when this will be possible.

Also adds a function `GreasePencil::validate_drawing_user_counts()` that
compares the actual user counts with the runtime user counts that are
stored. Only runs these checks in debug builds.

Pull Request: https://projects.blender.org/blender/blender/pulls/141458
2025-07-14 11:44:57 +02:00
Sybren A. Stüvel
c64e13ecae Fix #141882: Undo with local asset in asset shelf crashes Blender (ASAN)
Replace a `StringRef` with `std::string`, so that a copy is made of the
grid item identifier.

This identifier is used on redraw, to correlate the newly-drawn items
with items from the previous redraw. Using a `StringRef` here was
problematic when there's local assets, as those can be freed & re-built
(which in the case of the report happens on save/undo). Because of this,
the reference got corrupted, and the map lookup would fail. The "old
items" map now has a copy of the identifier, ensuring it is independent
of the data it represents.

Co-authored by Julian Eisel.

Pull Request: https://projects.blender.org/blender/blender/pulls/141888
2025-07-14 11:43:52 +02:00
Bastien Montagne
d5fcf4dee5 I18N: Updated UI translations from git/weblate repository (555104b9e84c). 2025-07-14 11:32:01 +02:00
Sybren A. Stüvel
13f0d6a859 Merge remote-tracking branch 'origin/blender-v4.5-release' 2025-07-14 11:25:48 +02:00
Sybren A. Stüvel
70ed5aca89 Fix #141828: Applying outdated PoseAssets crashes Blender
Gracefully handle the situation where an F-Curve in the pose asset targets
a bone that no longer exists.

Pull Request: https://projects.blender.org/blender/blender/pulls/141880
2025-07-14 11:20:13 +02:00
Sergey Sharybin
d156a047fd Merge branch 'blender-v4.5-release' 2025-07-14 11:09:04 +02:00
Sergey Sharybin
08ec4602a2 Fix #141768: VSE: Tabbing in/out of metastrips does not update strip cache
Regression caused by 9e4c26574a.

Add strip stack as a key to the final cache.

Use the pointer to the list of sequences, as it is the easiest one to
obtain in all places where it is needed. This is slightly different
from the code prior to the 9e4c26574a where strips.last() was used,
but it allows to use the same logic in the prefetch job.

Pull Request: https://projects.blender.org/blender/blender/pulls/141778
2025-07-14 11:08:39 +02:00
Denis Meyzer
e0a9e98cbd Fix: Only last tangents layer is exported to fbx when mesh has multiple uv layers
Only last tangents layer was written to all tangent layers before this fix.

Code before fix evaluate tangents for all layers into mesh loops data (which keeps data only for one layer) and then writes information about 'each' layer which is actually only the last one.
Code after fix evaluates tangents in the beginning of the loop that exports tangent data so that data for correct layer is being written into fbx.

Co-authored-by: Andrey Zhitkov

Pull Request: https://projects.blender.org/blender/blender/pulls/141839
2025-07-14 10:36:46 +02:00
Omar Emara
1cd8d5a7a5 Merge branch 'blender-v4.5-release' 2025-07-14 10:34:29 +03:00
Omar Emara
62e0a9105a Fix #141864: Crash opening files with Alpha Over node
Blender will crash if a file with an Alpha Over node was saved in 4.4,
then in 4.5 alpha, then back to 4.4. This is because the node was
missing forward compatibility code that allocates storage that was
necessary for the file to load correctly on older versions.

This was essentially missed in b62ef2cdd6 and 976efdcac9.

Pull Request: https://projects.blender.org/blender/blender/pulls/141873
2025-07-14 09:31:41 +02:00
Pratik Borhade
07b070404a Fix: Grease Pencil: Problem removing last layer with attributes
Caused by 68759af516
Deleting first layer (i.e. last in the tree view), layer attribute values
of previous layers gets messed up due to wrong offset value when
copying attribute data

Pull Request: https://projects.blender.org/blender/blender/pulls/141772
2025-07-14 08:49:51 +02:00
Hans Goudey
14e2876b73 Core: Replace BLI_buffer.hh with blender::Vector
The C++ Vector container has the benefits of the older C type,
along with improved performance, better type and memory safety,
and significantly improved ergonomics.

Pull Request: https://projects.blender.org/blender/blender/pulls/141759
2025-07-13 17:13:59 +02:00
Campbell Barton
ec8751f826 Cleanup: white-space around C-style comment blocks
Also use C++ style comments for disabling code.
2025-07-13 21:58:53 +10:00
Campbell Barton
6eec7e3bb1 Merge branch 'blender-v4.5-release' 2025-07-13 16:25:52 +10:00
Campbell Barton
2983ea4616 Cleanup: format 2025-07-13 16:25:25 +10:00
Campbell Barton
d4b2f719c3 Merge branch 'blender-v4.5-release' 2025-07-13 15:48:34 +10:00
Campbell Barton
601b5f49f0 Disable fix for #141846
While this works in 4.5x it could lock the UI in some cases in main.
Avoid possible regressions & disable for now.
2025-07-13 15:43:22 +10:00
Campbell Barton
98a949f997 Fix #141846: Successive calls to change the cursor exits on Wayland
Calling wm.progress_update() from Python in a loop would exit
under Wayland.

Resolve by calling wl_display_dispatch after changing the cursor.
2025-07-13 04:56:39 +00:00
Campbell Barton
a34c943e37 WM: correct own regression in recent cursor size clamping
When calculating the font size clamp by the requested cursor size
instead of 256.

This will often make the cursor smaller since allowing 256px wide
cursors is quite large.

Also de-duplicate size checks & round the text size to an integer to
avoid fractional scaling from subtle changes to the text.
2025-07-13 13:44:10 +10:00
Campbell Barton
4820bcc7cc Cleanup: doc-strings for currsor rasterization
Also add a safeguard to ensure the resulting cursor
never exceeds the requested size.
2025-07-13 12:28:32 +10:00
Campbell Barton
566afb8201 WM: access the windows DPI directly to calculate the mouse-cursor scaling
Instead of relying on the the `U.ui_scale` being set when activating
the window, calculate the cursor size from the windows DPI.

This also de-duplicates cursor scale calculation.
2025-07-13 11:57:29 +10:00
Campbell Barton
41fc42697c Cleanup: rename WM_window_{set_dpi => dpi_set_userdef}
The name read as if it was setting the DPI however the window DPI
was being calculated and written into the #UserDef (U).
2025-07-13 11:31:41 +10:00
Campbell Barton
a3d30afca1 Cleanup: move cursor details into struct doc-strings 2025-07-13 11:25:09 +10:00
Campbell Barton
10fab706f5 Cleanup: pass the cursor size to cursor_bitmap_from_text
Rename cursor_size() to wm_cursor_size() to allow this to be used
as an argument name without shadowing.
2025-07-12 20:54:27 +10:00