Commit Graph

121553 Commits

Author SHA1 Message Date
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
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
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
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
Campbell Barton
31ac70e6c2 Refactor: extract cursor rasterization into separate function calls
Prepare for dynamic cursor generation from !141597.
2025-07-12 20:36:01 +10:00
Campbell Barton
deda15f386 Cleanup: minor changes to wm_cursors.cc
- Use "g_" prefix for cursors to signify that it's global but local to
  the file.
- Use `const` cast passing pixel data to GHOST_SetCustomCursorShape.
- Remove redundant cast.
2025-07-12 19:24:14 +10:00
Campbell Barton
420a6a5bb6 WM: restore test code from previous commit
Restore UI_SCALE_FAC use for disabled testing logic.
2025-07-12 19:10:35 +10:00
Campbell Barton
eb836d8ae1 WM: use the systems DPI for cursor scale instead of the UI scale
Cursor size calculation now uses the GHOST DPI without the UI scale
since the UI scale doesn't impact system cursors.
2025-07-12 19:01:32 +10:00
Harley Acheson
bea1dbfab0 UI: Cursor Time for RGBA Platforms
The Windows and Wayland platforms can both create antialiased mouse
cursors from SVG sources. Platforms with WM_CAPABILITY_CURSOR_RGBA
can therefore show a better version of "WM_cursor_time". Instead of
four blocky digits in two rows this displays beautiful digits in a
single row.

Pull Request: https://projects.blender.org/blender/blender/pulls/141367
2025-07-12 05:22:41 +02:00
Jesse Yurkovich
deb86f3840 Cleanup: USD: Assign op properties directly to the import/export options
Assign the incoming operator properties directly to their corresponding
import/export options. This removes over 100 lines of unnecessary
ceremony assigning to local variables first.

Pull Request: https://projects.blender.org/blender/blender/pulls/141803
2025-07-12 00:10:31 +02:00
Jesse Yurkovich
c8052bd0dc Cleanup: USD: Use string instead of char array for prim_path options
Use `std::string` rather than raw char arrays for `root_prim_path` and
`prim_path_mask`. This is a more natural fit for these arbitrary length
strings and it simplifies downstream consumers of the values.

Pull Request: https://projects.blender.org/blender/blender/pulls/141801
2025-07-11 22:59:35 +02:00
Guillermo Venegas
c97195cd63 Refactor: UI: Replace uiItemMenuEnumFullO* with class methods
This converts the public uiItemMenuEnumFullO* functions to an
object-oriented API (as uiLayout::op_menu_enum overloads),
matching recent changes in the API.

Part of: #117604

Pull Request: https://projects.blender.org/blender/blender/pulls/141797
2025-07-11 19:52:58 +02:00
Hans Goudey
8f198a85b4 Refactor: Add RNA_string_get function returning a string
This can replace most uses `RNA_string_get_alloc` and give us
better type safety and generally simpler code.

Internally, this uses the function added in 50076993f3.

Pull Request: https://projects.blender.org/blender/blender/pulls/141358
2025-07-11 16:24:13 +02:00
Sybren A. Stüvel
7e3c5d021b Cleanup: document the PROP_ID_REFCOUNT RNA property flag
Document what the flag does, and explain that it effectively gets nullified
when there is a custom setter function.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/141739
2025-07-11 16:19:14 +02:00
Hans Goudey
d677a0636e Fix: Incorrect selection check in vertex group smooth after cleanup
Mistake in 546d3495a8.
Thanks to Campbell for spotting this.
2025-07-11 09:29:45 -04:00
Guillermo Venegas
1f34dc9155 Refactor: UI: Replace uiItemsEnumO with class method uiLayout::op_enum
This converts the public uiItemsEnumO and uiItemsFullEnumO functions
to an object-oriented API (as uiLayout::op_enum overloads), matching
recent changes in the API.

Part of: #117604

Pull Request: https://projects.blender.org/blender/blender/pulls/141748
2025-07-11 15:25:30 +02:00
Philipp Oeser
8840aa8718 Merge branch 'blender-v4.5-release' 2025-07-11 13:19:36 +02:00
Philipp Oeser
481776a105 Fix #141727: Toggling overlays with enabled Retopology missing update
Meshes could still be present or missing when toggling overlays.

Toggling overlays alone does not trigger object syncing (which is needed
here since the visibility of active object might change).

So to resolve, trigger `rna_SpaceView3D_retopology_update` when toggling
overlays with enabled Retopology

Ref. 6fee44760a

Pull Request: https://projects.blender.org/blender/blender/pulls/141731
2025-07-11 13:19:18 +02:00
Habib Gahbiche
9a33108afc Compositor: Support rotation for Split Node Gizmo
The split gizmo now supports rotation. It uses the same rotation
handle for `cage2d` gizmos

Pull Request: https://projects.blender.org/blender/blender/pulls/140356
2025-07-11 11:59:46 +02:00
Habib Gahbiche
b35971ad08 Compositor: Rename "Z" to "Depth" in Z Combine Node
Node:
- Rename "Z Combine" node to "Depth Combine"

Sockets:
- First input "Image" -> "A"
- Second input "Image" -> "B"
- First Z -> "Depth A"
- Second Z -> "Depth B"
- Output Image -> "Result"
- Output Z -> "Depth"

This is a breaking change for the Python API

Pull Request: https://projects.blender.org/blender/blender/pulls/141676
2025-07-11 11:58:29 +02:00
Julian Eisel
dd81681583 Refactor: Start splitting filelist.cc
This file is rather big. I'm working in it quite a lot, and find it very
hard to navigate in. I constantly get lost or spend time manually
looking for things.

Move the file to a directory, add an internal header, and split out
filtering and sorting code into own files. I'm sticking with these for
now to not cause too many conflicts with blender/blender!130543, which
does a lot of changes/additions to filelist.cc.

Pull Request: https://projects.blender.org/blender/blender/pulls/141744
2025-07-11 11:30:04 +02:00
Nathan Vegdahl
03332c514d Cleanup: Use prescribed symbol syntax in Path Template code comments
Specifically, #Symbol rather than `Symbol`, as documented in
https://developer.blender.org/docs/handbook/guidelines/c_cpp/#comments

This is a follow up to #139438

Pull Request: https://projects.blender.org/blender/blender/pulls/141775
2025-07-11 11:00:52 +02:00
Lukas Tönne
efeb11b9c5 Fix #141012: Curve template allows zooming out beyond clip range
The clipping flag of curve templates is applied only to point positions,
but allows zooming beyond the clip range due to numerial error.

If clipping is disabled the curve view rect is still restricted to
clip ranges (this could be considered a bug). However, zooming in and
back out leaves a tiny offset to the clip rect that allows one more
zoom-out step.

This patch ensures the curve rect is always within the clip rect.
When the difference is very small the view rect is snapped to the clip
rect.

Pull Request: https://projects.blender.org/blender/blender/pulls/141275
2025-07-11 10:15:19 +02:00
Omar Emara
c53a839631 Compositor: Support host allocation for GPU compositing
This patch allows allocating results on the host even if the context
uses GPU. It also adds support for uploading the host result into a GPU
allocated result. This is done to allow using results for storing data
that gets computed on the CPU be end up on the GPU, like some of the
cached resources used by the compositor. Those resources are refactored
accordingly in this patch as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/141745
2025-07-11 07:55:11 +02:00
Campbell Barton
6a2a999173 Merge branch 'blender-v4.5-release' 2025-07-11 15:48:27 +10:00
Campbell Barton
29a7b60a40 Fix #141667: Erratic behavior with orthographic camera gizmo
Regression in 3.6 caused the orthographic camera gizmo to enter a
feedback loop where the gizmo range was changed while being interacted
with.

Resolve by preventing the range being updated during modal interaction.
2025-07-11 15:36:16 +10:00
Richard Antalik
61b6af6096 Fix #141190: Strip cache not invalidated when keyframe is added
Add case for action ID to VSE depsgraph update callback. Cache is only
cleared, when action changed is owned by scene, since VSE animation
lives there.

Also fixes: #119998, #109579, #98432, #90041, #94542, #82861

Pull Request: https://projects.blender.org/blender/blender/pulls/141647
2025-07-11 07:00:10 +02:00
Jesse Yurkovich
4de536c114 Cleanup: Remove unused includes of grease pencil legacy headers
Removes unnecessary usages of the following headers:
- BKE_gpencil_geom_legacy.h
- BKE_gpencil_legacy.h
- BKE_gpencil_modifier_legacy.h
- BKE_grease_pencil_legacy_convert.hh
- DNA_gpencil_legacy_types.h

Pull Request: https://projects.blender.org/blender/blender/pulls/141471
2025-07-11 05:01:57 +02:00
Jesse Yurkovich
319a2a5e57 Cleanup: USD: Use pxr::UsdTimeCode for all time values
Standardize on using `pxr::UsdTimeCode time` rather than the assortment
of other uses we had including:
- double motionSampleTime
- double motion_sample_time
- float time (!)
- pxr::UsdTimeCode timecode

This matches what the USD API itself uses.

The only exception is for the APIs and types defined in usd.hh that need
to be useable inside Blender itself. Those will remain unchanged and
continue to use "double motion_sample_time".

Pull Request: https://projects.blender.org/blender/blender/pulls/141756
2025-07-11 01:28:49 +02:00
Hans Goudey
546d3495a8 Cleanup: Use attribute API for mesh data in vertex group smooth operator
And use VArray::ForSingle instead of macros.

Pull Request: https://projects.blender.org/blender/blender/pulls/141752
2025-07-10 22:18:07 +02:00
Hans Goudey
8f65cbd727 Cleanup: Use attribute API for dynamic paint color outputs 2025-07-10 22:18:06 +02:00
Hans Goudey
16aca719e2 Cleanup: Remove unnecessary includes in attributes files 2025-07-10 22:18:06 +02:00
Hans Goudey
a3e8da0072 Cleanup: Line Art: Simplify Freestyle flag CustomData access 2025-07-10 22:18:06 +02:00
Hans Goudey
93f6adcaf1 Cleanup: Use attribute API to create mesh attributes in Freestyle 2025-07-10 22:18:06 +02:00
Hans Goudey
1f1d2f4252 Cleanup: Use mesh helper function to access edge data 2025-07-10 22:18:06 +02:00
Hans Goudey
5b6e632582 Cleanup: Use attribute API for solidify modifier result attributes
Use the attribute API for the result bevel weight and crease custom
interpolation.
2025-07-10 22:18:06 +02:00
Hans Goudey
2b86b32fc3 Fix: Avoid tagging geometry with uninitialized attribute on add
Mistake in 325ceabb09

Pull Request: https://projects.blender.org/blender/blender/pulls/141747
2025-07-10 19:05:00 +02:00