Commit Graph

154450 Commits

Author SHA1 Message Date
Brady Johnston
4a56973fe7 Geometry Nodes: Set Grid Transform
Explicitly set the transform of a grid.

The new transform can fail to be applied if the input transform isn't
invertible or for some extremes of scaling (0 or combinations of
negative and positive) and numerical errors with `openvdb`. If a
transform is not applied an error is raised and the `Is Valid`
returns false.

Pull Request: https://projects.blender.org/blender/blender/pulls/146824
2025-10-02 19:12:39 +02:00
Hans Goudey
a68d39e9d9 Cleanup: Formatting
Run `make format` after the library update in the previous commit.
2025-10-02 12:55:42 -04:00
Thomas Dinges
66224d69b0 Deps: Library changes for Blender 5.0
This commit includes the changes to the build system, updated hashes to the actual new libraries as well as a required test update.

* DPC++ 6.2.0 RC
* freetype 2.13.3
* HIP 6.4.5010
* IGC 2.16.0
* ISPC 1.28.0
* libharu  2.4.5
* libpng 1.6.50
* libvpx 1.15.2
* libxml2 2.14.5
* LLVM 20.1.8
* Manifold 3.2.1
* MaterialX 1.39.3
* OpenColorIO 2.4.2
* openexr 3.3.5
* OpenImageIO 3.0.9.1
* openjpeg 2.5.3
* OpenShadingLanguage 1.14.7.0
* openssl 3.5.2
* Python 3.11.13
* Rubber Band 4.0.0
* ShaderC 2025.3
* sqlite 3.50.4
* USD 25.08
* Wayland 1.24.0

Ref #138940

Co-authored-by: Ray Molenkamp <github@lazydodo.com>
Co-authored-by: Jesse Yurkovich <jesse.y@gmail.com>
Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Co-authored-by: Nikita Sirgienko <nikita.sirgienko@intel.com>
Co-authored-by: Sybren A. Stüvel <sybren@blender.org>
Co-authored-by: Kace <lakacey03@gmail.com>
Co-authored-by: Sebastian Parborg <sebastian@blender.org>
Co-authored-by: Anthony Roberts <anthony.roberts@linaro.org>
Co-authored-by: Jonas Holzman <jonas@holzman.fr>

Pull Request: https://projects.blender.org/blender/blender/pulls/144479
2025-10-02 18:34:11 +02:00
Jacques Lucke
61cc3af675 Fix #147219: field in bundle is lost when geometry
This was an issue with creatiung the correct `reference_relations` between
input and output sockets. Those are necessary for the automatic lifetime inferencing.
2025-10-02 17:51:11 +02:00
Pablo Vazquez
28280aaeeb Nodes: UI: Center Define Signature in Bundle nodes
Center "Define Signature" in Combine/Separate Bundle nodes,
to match others.

Pull Request: https://projects.blender.org/blender/blender/pulls/147222
2025-10-02 17:50:06 +02:00
Brecht Van Lommel
be61366801 Nodes: Show node editor context path also without a node tree
This provides context for where the node tree will be added when clicking New.

Ref #139634

Pull Request: https://projects.blender.org/blender/blender/pulls/146852
2025-10-02 17:39:30 +02:00
Brecht Van Lommel
83595a41bb Nodes: Further tweaks to add menu for shaders
* Move Shader before Displacement
* Organize Shader submenu by mix/add, surface and volume
* Alphabetically order Color submenu
* Move Script into utilities

Pull Request: https://projects.blender.org/blender/blender/pulls/147212
2025-10-02 17:23:39 +02:00
Jesse Yurkovich
b1045fb1fe Fix: Adjust adaptive subdivision versioning to set defaults in all cases
When an old file that uses regular subdivision is loaded, the adapative
settings were not applied to the existing modifiers if they weren't
already using adaptive subdivision. This results in the settings
remaining at their 0 defaults which can be surprising. E.g. the
`dicing_rate` of 0 is clamped to 0.1px which is probably not intended.

Make sure to set the correct defaults in all cases now.

Pull Request: https://projects.blender.org/blender/blender/pulls/147164
2025-10-02 17:20:54 +02:00
Brecht Van Lommel
e238970bd9 Color Management: Update for new extended sRGB naming conventions in OCIO
Recognize srgbe_ prefix for interop ID, and edr-video encoding as HDR.

Pull Request: https://projects.blender.org/blender/blender/pulls/147205
2025-10-02 17:20:35 +02:00
Hans Goudey
946b3498b3 Fix: Build error with OpenVDB disabled 2025-10-02 11:18:36 -04:00
Christoph Lendenfeld
50748d3099 Fix #146105: Missing depsgraph update for "Clear Keyframes"
The issue was that the "Clear Keyframes" operator was missing call
to notify the dependency graph, and thus objects were still animated
even though the keyframes were deleted.

Pull Request: https://projects.blender.org/blender/blender/pulls/147216
2025-10-02 17:12:35 +02:00
Sebastian Parborg
df7273930f PyAPI: Add "path_from_module" function to get full bpy path to structs and props
This is to make it easy to get the bpy paths to bpy.context.property for
example. Before this change, the easiest way was to use the clipboard
bpy.ops function. However this would make the python scripts using this
fragile as it we do not have full control of what is stored in the
system clipboard.

Pull Request: https://projects.blender.org/blender/blender/pulls/147116
2025-10-02 17:05:43 +02:00
Sybren A. Stüvel
8d417cb280 Refactor: lazy import anim_utils from bpy_extras
Import `anim_utils` from `bpy_extras` in a lazy way, instead of at the top
of the module. This will improve load times of Blender.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/147215
2025-10-02 17:00:13 +02:00
Pablo Vazquez
84af3e8b47 UI: Icons: Flip direction of looking-glass icon
All looking-glass icons in Blender were left-handed.

Most OS, applications, websites, even a simple image search shows that
these icons are more often depicted right-handed.

Flip all icons that include a looking-glass.

See PR for details and descriptions.

Pull Request: https://projects.blender.org/blender/blender/pulls/147206
2025-10-02 16:52:35 +02:00
Pablo Vazquez
526f46d2c3 UI: Icons: Add icon for Sequencer Strip Modifier
Add a new icon for Sequencer strip modifiers.

See PR for details and screenshots.

Pull Request: https://projects.blender.org/blender/blender/pulls/147208
2025-10-02 16:49:05 +02:00
Stefan Werner
083aad8a45 Cycles: Specialization constants for Embree/SYCL
Making heavier use of specialization constants in SYCL for Embree.
This reduces code size of the intersection kernels and bring
performance improvement up to 9% in some scenes on
Intel GPUs.

Co-authored-by: Stefan Werner <stefan.werner@intel.com>
Co-authored-by: Nikita Sirgienko <nikita.sirgienko@intel.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/141559
2025-10-02 16:44:24 +02:00
Brady Johnston
0a77a57c4e Geometry Nodes: Add OpenVDB grid operators
Adds four new grid operator nodes that wrap OpenVDB's differential
operators. All nodes take a grid input and output a grid, potentially
with a different data type.

New nodes:
- Grid Curl: Calculate curl of vector field (Vec3 → Vec3)
- Grid Divergence: Calculate divergence of vector field (Vec3 → Float)
- Grid Gradient: Calculate gradient of scalar field (Float → Vec3)
- Grid Laplacian: Calculate Laplacian of scalar field (Float → Float)

These operators enable vector calculus operations on volume grids for
effects like flow analysis, vortex detection, etc.

Co-authored-by: Hans Goudey <hans@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/146845
2025-10-02 16:28:46 +02:00
Bastien Montagne
fdfbb3ad20 Fix (unreported) memleak in IDHash when computing the hash fails.
Code would early-return on failure, forgetting to free the xxhash state.

Use the `BLI_SCOPED_DEFER` util to ensure the state is always properly freed
when it gets out of scope.

Pull Request: https://projects.blender.org/blender/blender/pulls/147189
2025-10-02 16:26:03 +02:00
Bastien Montagne
289e5ef0b7 Fix #147057: Crash when Asset Library Pack-Importing a Missing Data Block.
Do not delete linked data if the packing fails.

Pull Request: https://projects.blender.org/blender/blender/pulls/147190
2025-10-02 16:20:08 +02:00
Damien Picard
8b351bdee8 Node Wrangler: Fixes for Save Viewer operator
## Fix: Error in Node Wrangler UI when in Sequencer mode

Node Wrangler tried to find the current scene compositing node tree,
even when there was none. This could happen if working on a sequencer
compositing modifier.

This commit hides the Save This Image button when not in Scene
compositing mode.

## Fix: Error in Node Wrangler's Save Image op when file path is empty

If the file path is empty in Save Image operator, it returns `None`
and errors out.

This commit makes it return `{'CANCELLED'}` early in that case.

## Add webp to list of file formats for Save Viewer

## Fix: Error when Viewer Node image renamed and saved

The "Viewer Node" image that contains the current compositing node
tree's viewer data has a hardcoded name by default. However it can be
renamed by the user, which will make the Save Viewer operator fail.

This commit extracts a utility function to get the current viewer
image based on its properties, and simply saves that.

In addition, this avoids having to change the area type to an image
editor to get the current viewer node, and restoring the node editor
afterwards. This action did not restore the current node tree if the
editor was inside a node group.

## Rename "Save This Image" to "Save Viewer Image"

When calling the operator through Menu Search, it is not clear what
"Save This Image" refers to. This commit renames the operator to "Save
Viewer Image", but keeps the old name for the button label.

Pull Request: https://projects.blender.org/blender/blender/pulls/147085
2025-10-02 16:14:32 +02:00
илья _
d4e254a552 Cleanup: Manifold Boolean: Change order of mesh construction
This patch swap position attribute initialization and edge construction
of boolean result. Logic is what both of these steps are last, all
future code do not build mesh topology but only maintain user
attributes. So at this point mesh already must be valid. But future
change of edge calculation (#132492) code will requer this mesh
validation to be done as part of the step. So when edges will be
calculated mesh must already be built, valid and contains position
attribute.

Pull Request: https://projects.blender.org/blender/blender/pulls/146229
2025-10-02 15:14:32 +02:00
Philipp Oeser
bb3f0f5401 Fix #147182: Duplicating workspace sequencer_scene based on window scene
1122a05cb6 made it so that a new scene was based off of the window
scene, now changed to the workspace sequencer_scene (if we have one,
otherwise fallback to the window scene).

Pull Request: https://projects.blender.org/blender/blender/pulls/147187
2025-10-02 15:07:32 +02:00
Sybren A. Stüvel
7b18a2c324 Refactor: convert Rigify from legacy Action API to the current API
Minimal changes to make Rigify use the current Action API (introduced in
Blender 4.4) instead of the legacy API (removed in 5.0).

Most of the refactoring consists of:

- Find the right `Channelbag`
- Replace operations on `Action` with operations on that `Channelbag`.

I didn't manage to test all code, because some code paths are very hard
to follow, and others seem to only be available for legacy rigs.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:43 +02:00
Sybren A. Stüvel
6f844409b6 Refactor: convert sequencer "Clear Fades" to current Action API
Convert the code for the sequencer "Clear Fades" operator from the
legacy Actions API to the current API.

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:43 +02:00
Sybren A. Stüvel
2cabaeb4a7 Refactor: convert rigid body "Bake to Keyframes" to current Action API
Convert the code for the rigid body "Bake to Keyframes" operator from the
legacy Actions API to the current API.

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:43 +02:00
Sybren A. Stüvel
89d059c5d7 Refactor: convert "Animated Transforms to Deltas" to current Action API
Convert the code for the "Animated Transforms to Deltas" operator from the
legacy Actions API to the current API.

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:43 +02:00
Sybren A. Stüvel
bafddfd9fb Refactor: convert "Clear Useless Actions" operator to current Action API
Convert the code for the "Clear Useless Actions" operator from the
legacy Actions API to the current API.

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:43 +02:00
Sybren A. Stüvel
95c8521eb6 Refactor: convert "F-Curve path refactor" code to current Action API
Convert the code in `scripts/modules/animsys_refactor.py` from the
legacy Actions API to the current API.

The code was made for very old rigs (2.70 and older, last updated for
Caminandes in 2014). The updated code seems to work on a Caminandes test
file, and produces the same logging on the terminal as in Blender 4.3
(before slotted Actions).

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:43 +02:00
Sybren A. Stüvel
5c2069e284 Refactor: convert "Bake Action" operator to current Action API
Remove the use of `action.fcurves` in the Bake Action operator, replacing
it with the current API (introduced for slotted Actions in Blender 4.4).

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:43 +02:00
Sybren A. Stüvel
c77ac91ee4 Refactor: convert "Copy Pose Asset" operator to use the current Action API
Convert the Copy Pose Asset code from the legacy Action API to the
current API (introduced in Blender 4.4).

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:42 +02:00
Sybren A. Stüvel
0b978a20e7 Refactor: convert BVH importer to use the current Action API
Use the current API (i.e. not the to-be-deleted-in-5.0 one) to import
F-Curves from BVH files.

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:42 +02:00
Sybren A. Stüvel
3171a22dfd Refactor: adjust unit tests to no longer use the legacy Action API
Adjust various unit tests so that they no longer use the legacy Action
API (which was deprecated in Blender 4.4 and will be removed in 5.0).

No functional changes.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/147060
2025-10-02 14:42:42 +02:00
Aras Pranckevicius
e4b4e7c308 Fix: Anim: Time display text labels drawn over one another
Regression in e65524382, where what should have been essentially
(window_width / text_width) became (window_width + 1/text_width)
which is not the same at all! What the code was trying to do is
((window_width + 1) / text_width)

Most easily visible in VSE template because it defaults to
MM:SS+FRAME display format, but could be seen in other
animation related windows.

Pull Request: https://projects.blender.org/blender/blender/pulls/147198
2025-10-02 14:22:05 +02:00
Hans Goudey
9b0f27d98a Cleanup: Use socket runtime declaration pointer
Rather than finding the socket's index in the linked list.
2025-10-02 08:16:56 -04:00
Casey Bianco-Davis
29124398a4 Fix: Grease Pencil: Pen tool memory leak
This fixes a memory leak that could occur with the
Grease Pencil Pen Tool. If the Pen Tool exited during
the initialization the `GreasePencilPenToolOperation`
object would not be deleted. The Pen Tool could end
in initialization if the `Selection Mode` was not `Points`

This problem only effected Grease Pencil, because
the `Curves` Object code properly exited.

Pull Request: https://projects.blender.org/blender/blender/pulls/147170
2025-10-02 13:57:37 +02:00
Campbell Barton
7f36eebf5c Wayland: lower the requirement for the xdg_output_manager for Rocky8
GHOST/Wayland failed to initialize on older versions of GNOME.
Lower the requirement so Blender can start on the build-bot.

Ref !147165
2025-10-02 21:51:23 +10:00
Campbell Barton
88cbc71533 Build: unbreak WITH_OPENVDB=OFF 2025-10-02 21:51:23 +10:00
Jacques Lucke
9d20c8d3c8 Spreadsheet: show volume grid stats
This adds support for showing various stats of volume grids in the spreadsheet:
* Extent: Number of voxels in each direction of the bounding box of the grid.
* Voxels: Total number of active voxels in the grid. This includes all voxels
  which are stored in tiles (e.g. one leaf tile contains 512 voxels).
* Leaf Voxels: Number of active voxels stored in leaf nodes. This does not
  contain any voxels that are part of tiles.
* Tiles: Number of active tiles in the grid.
* Size: Estimated size of the volume grid in memory.

All these stats are cached on the volume grid now. A new `tag_tree_changed`
method has been added to invalidate the cache. Computing these stats is not
cheap (but not more than a few ms even for large grids). That mainly means that
we can't do it for socket inspection because that would cause too much overhead.
However, doing it just for the grids that are currently visible in the
spreadsheet seems fine and useful.

This also adds some general improvements to the spreadsheet:
* Support `int64_t` and `int3` columns.
* Draw ints with thousand separators.
* Support showing ints as number of bytes such as `23 MB`.

Pull Request: https://projects.blender.org/blender/blender/pulls/147191
2025-10-02 13:50:25 +02:00
Hans Goudey
4339a60f78 Geometry Nodes: Add volume grid name search
Very similar to the layer name search added somewhat recently.
This just displays the names of existing grids in the "Name"
inputs to the Store and Get Named Grid nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/147163
2025-10-02 13:46:12 +02:00
Pratik Borhade
a48bb36588 Fix #147098: No Default Import method being set on new asset library path
`append and reuse` is chosen as default in DNA but this enumpropertyitem
isn't added to the array when `Non data block packing` is disabled in
Developer tools (see `rna_preference_asset_libray_import_method_itemf`).
To fix this, change default in DNA to `ASSET_IMPORT_PACK`. In case of
"non packing", change import_method inside `asset_library_add()`
function. Also introduce `rna_preference_asset_libray_import_method_default`
so that "reset to default value" operator works correctly.

Pull Request: https://projects.blender.org/blender/blender/pulls/147104
2025-10-02 13:27:13 +02:00
Jacques Lucke
b9b52472f3 Fix: Geometry Nodes: wrong socket shapes in bake node 2025-10-02 13:10:05 +02:00
Bastien Montagne
ccd16d3372 Fix #147162: Curves Sculpt: Invalid library for 'BRComb'.
Basic mistake in new 'split main' handling that lead to generting
invalid indices for some libraries in some cases.
2025-10-02 12:51:30 +02:00
Jeroen Bakker
b2eaf812b1 Fix: Vulkan: Validation error on Qualcomm
!146956 introduced buffer streaming and is used to improve the
performance of text rendering. However the solution didn't check the
minimum allowed offset for storage buffers.

This PR will use the correct offset. This was only visible on Qualcomm
devices as other systems don't limit this offset.

Detected when looking into: #147023

Pull Request: https://projects.blender.org/blender/blender/pulls/147192
2025-10-02 12:47:24 +02:00
Sybren A. Stüvel
0547d2970f Anim: fix stack-use-after-scope error
Remove the unnecessary construction of a `std::string` to resolve a
stack-use-after-scope error.

Pull Request: https://projects.blender.org/blender/blender/pulls/147186
2025-10-02 12:34:54 +02:00
Pablo Vazquez
17e82ff030 Compositor: UI: Inline sockets
Where possible, inline sockets when the input and output are both the
image or the same value just transformed.

Even though it may make sense, do not apply this change in cases where
the image is the same when a factor is set to "0". For example the
Alpha Over node, where the "Background" matches the "Image" output if
factor is 0. Or the Mix node's "A" and "Image".

Also hide the value (usually a full white color input widget).

It makes for a more compact UI, less noise, and it matches a similar
layout in Geometry Nodes.

See PR for screenshots.

Pull Request: https://projects.blender.org/blender/blender/pulls/147143
2025-10-02 12:04:27 +02:00
Sybren A. Stüvel
e077c189ec Refactor: Action unit tests, replace deprecated self.assertEquals() call
In the Action unit tests, replace the calls to the deprecated
`self.assertEquals()` function with `self.assertEqual()`.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/147185
2025-10-02 11:41:38 +02:00
Habib Gahbiche
5e0b244066 Nodes: Unify add menus
The general idea is to order all menus as:
```
Common categories
(e.g. Input/output)
---
Specific categories
---
Assets
--
Common categories
(e.g. Group/Layout)
```

## Changes:
### Compositor
- Removed Color/Mix submenu
- Moved Vector to Utilities
- New Category: "Creative". This is where most new assets will fit in.
- Moved to Creative:
	- Kuwahara
    - Pixelate
    - Posterize

### Geo Nodes
- Moved 'Vector' to 'Utilities'
- Moved 'Attribute' before 'Geometry'
- Moved 'Material' to 'Geometry'
- Moved 'Color' to top level, grouped with Utilities

### Shader
- Moved 'Vector' to 'Utilities'
- Deleted 'Converter'
- New 'Displacement' menu
- Grouped 'Color' with Utilities (remains top level)

Ref: https://devtalk.blender.org/t/2025-09-05-design-session-node-groups-different-editors/42244
Pull Request: https://projects.blender.org/blender/blender/pulls/146806
2025-10-02 11:07:25 +02:00
Sean Kim
05a3072e7b Cleanup: UI: Remove duplicate Grease Pencil vertex paint code
Pull Request: https://projects.blender.org/blender/blender/pulls/147096
2025-10-02 10:54:55 +02:00
Sybren A. Stüvel
6c011cfed8 IO: update FBX im-/exporter to use the current Action API
Use the current Action API (i.e. move away from the to-be-deleted-in-5.0
one) to import and export F-Curves from/to FBX files.

There is a slight difference in functionality for the exporter, in the
selection of which Actions to export for the "All Actions" option. This
is just a minimal change to ensure the legacy API is no longer used.

Old: `action.fcurves` was iterated, and if all FCurves could resolve to
existing properties, the Action was exported. This would only work
reliably for single-slotted Actions, due to the use of the deprecated
`action.fcurves` property.

New: the above check is done for each Channelbag in the Action. The
first Channelbag that match the above check is exported. This does _not_
export all suitable channelbags; it merely improves on the old behaviour
slightly.

This is part of #146586

Pull Request: https://projects.blender.org/blender/blender/pulls/146980
2025-10-02 10:25:50 +02:00
Simon Thommes
1aaa540763 Essentials Assets: Duplicate Separate/Combine Cylindrical/Spherical assets for shading and compositing
- Adjust asset file structure.
- Fix radius output in `Separate Cylindrical` node-group.
- Add Separate/Combine Cylindrical/Spherical assets for shading and compositing nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/147181
2025-10-02 09:53:29 +02:00