Commit Graph

122182 Commits

Author SHA1 Message Date
Campbell Barton
ff10f7803e Cleanup: correct comment 2025-08-08 07:36:32 +10:00
Campbell Barton
0b091db913 RNA: require the enum flag is set before enum items are set
Failure to do this can cause the the property default to be incorrect
and some sanity checks fail to run.

Fail when an error if this isn't set.

Ref !144133
2025-08-07 20:45:45 +00:00
Hans Goudey
02181347ce Geometry Nodes: Change closure color, reset repeat zone color
Follow up to f646948ace
The repeat zone color is changed back to the color it used in 4.5, to
avoid the need for people to re-learn the color. The closure socket and
zone share the same color, which is made more yellow-ish to distinguish
it from the bundle socket color.
2025-08-07 15:27:02 -04:00
Jesse Yurkovich
2822b3badf Fix: USD: Use exr instead of hdr for world light texture
The spec for .usdz permits only a small handful of file formats to be
contained in the archive, and HDR is not among those supported[1]. This
also causes validation errors with the `usdchecker` tool (will be
properly tested in a follow up change).

Ignoring the potential for a user to export a .usdz file with materials
referencing unsupported file formats, Blender itself should use only
the supported formats for its business.

[1] https://openusd.org/release/spec_usdz.html#usdz-specification

Pull Request: https://projects.blender.org/blender/blender/pulls/144101
2025-08-07 20:54:22 +02:00
Ray Molenkamp
8bf975325b bf_imbuf_movie: Fix warnings building with MSVC 2019
in 236b6513cf which was supposed to
remove warnings, 6 new warnings were added, this fixes those warns

See PR #144164 for exact details

Pull Request: https://projects.blender.org/blender/blender/pulls/144164
2025-08-07 20:29:57 +02:00
Habib Gahbiche
6d129290a7 Nodes: Use frame with label for versioning Use Nodes (World)
Ref: #143441

Add label to indicate that the new nodes were added for versioning:

Pull Request: https://projects.blender.org/blender/blender/pulls/144083
2025-08-07 20:08:25 +02:00
Miguel Pozo
908fd7ab57 Fix: EEVEE: VolumeProbeModule do_full_update_
`VolumeProbeModule::do_full_update_` can be true while
`irradiance_pool_size_` being already correct and `irradiance_atlas_tx_`
being valid, so `brick_pool_` ends up being "allocated" with
`atlas_col/row_count` being 0.
This can happen if `VolumeProbeModule::init` is called, but the
`VolumeProbeModule::set_view` call is skipped (due to ongoing shader
compilation), so the `do_full_update_` flag is not cleared before the
next `init`.

Pull Request: https://projects.blender.org/blender/blender/pulls/144154
2025-08-07 19:37:09 +02:00
Miguel Pozo
7263d19c1e Fix #142046: EEVEE: Deferred Lighting shader doesn't run (Nvidia)
The issue in #142046 is caused by the deferred lighting pass not
running.
Despite plenty of testing and debugging we have not been able to spot
any errors in the Blender code.
Checking the link status of specialization shader variants seems to fix
the issue, which may suggest a bug on the driver side.

Pull Request: https://projects.blender.org/blender/blender/pulls/144150
2025-08-07 19:36:06 +02:00
Hans Goudey
45f3180bc8 Fix #143539: Assert in UI auto complete after StringRef refactor
Caused by d216476458
2025-08-07 12:57:33 -04:00
Hans Goudey
5925233e4d Fix #143847: Assert in attribute operator poll after refactor
Mistake in fa03c53d4a.
We need to test for negative indices here too.
2025-08-07 12:38:27 -04:00
Jacques Lucke
3f94a4ab1c Animation: minor speedup when accessing id properties
This is fundamentally quadratic code until #140907 is implemented. However, the
old approach that didn't use `StringRef` was a few percent faster because it
didn't have to call `strlen` as often. So this brings back a little bit of
performance in cases like #140706.

Pull Request: https://projects.blender.org/blender/blender/pulls/144012
2025-08-07 16:38:04 +02:00
Maxime-Cots
7f8d01f809 UI: "Delete Other Workspaces" operator
Adds a context menu entry to delete all workspaces but the one the menu
was spawned from.

Co-authored-by: Nig3l <nig3lpro@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/138530
2025-08-07 16:07:05 +02:00
Christoph Lendenfeld
a43359eb88 Anim: Store pose bone visibility flag on pose bone
This PR adds a flag to the pose bone that determines its visibility.
Doing so allows to hide a pose bone and
* don't affect other instances of the same armature
* save the visibility even if the rig is linked

The visibility of the bone in object mode is now also determined by the
pose bone whereas before it was the `Bone`.

**This breaks backwards compatibility** on the Python API since the visibility property,
on the `Bone` behaves differently now as it hides the edit bone instead of the pose bone.

In order to remove all active uses of `BONE_HIDDEN_P` the changes in `armature_skinning.cc` are required.

Part of #138482

Pull Request: https://projects.blender.org/blender/blender/pulls/139167
2025-08-07 15:54:58 +02:00
YimingWu
6f57268e9a LineArt: Use "Radius" instead of "Thickness" for generating strokes
Previously line art uses the same thickness value as found in grease
pencil before blender v4.3 for generating strokes, now everything is
migrated to using "radius", so it makes more sense to change that it to
using "radius" so it's consistent with everywhere else.

Pull Request: https://projects.blender.org/blender/blender/pulls/144121
2025-08-07 15:40:17 +02:00
Jeroen Bakker
4333e070b4 Fix: SubDiv: Out of bound write loose normals
Updating loose normals leads to out of bound writes on the GPU.
The reason is that normals are float3, but the code assumed
they were float4.

Pull Request: https://projects.blender.org/blender/blender/pulls/144128
2025-08-07 15:26:42 +02:00
Omar Emara
68dc278fe5 Compositor: Redesign File Output node
This patch redesigns the File Output node to provide better UX and UI.
This is mainly achieved by allowing the user to create inputs by
dragging into an Extend socket and adjust existing inputs using the
familiar UI list design available in Blender. Additionally, various UI
changes were done:

- The Use Node Format option was renamed to Override Node Format for
  clarity.
- Socket types are now fixed and do not change as new links are made,
  allowing users to specify the exact output type and employ implicit
  conversion if needed.
- The distinction between images and Multi-Layer EXR was made clearer.
- Final output paths are drawn in the UI to remove guess work.
- The Base Path was split into a Directory and a File Name.
- Panels were added to group options, include a panel for the node
  format, items, and item formats.

Pull Request: https://projects.blender.org/blender/blender/pulls/141091
2025-08-07 14:46:34 +02:00
Hans Goudey
23ad91ce53 Nodes: Change collapsed node shape
This PR changes the collapsed node socket shape to remove the "pill"
shape, so that the input and output sockets are stacked vertically
instead of around semi-circles.

The main motivation is to improve the look with single value sockets,
where the combination of their vertical shape and the rounded pill shape
of the node looked quite bad.

Regardless of that though, I'd argue this makes the smaller collapsed
nodes look much nicer: more consistent with other nodes and even a bit
smaller. For larger collapsed nodes, at least it gets rid of the
"gigantic circle" shape.

There is still some overlap with stacked single-value sockets. That's
a compromise to keep the node small (half the distance between sockets
as regular nodes), but it could be tweaked.

Pull Request: https://projects.blender.org/blender/blender/pulls/144028
2025-08-07 14:37:21 +02:00
Jeroen Bakker
82d18d2f66 Vulkan: Add resource tracker to debug output
Helps detecting memory leaks as these numbers shows the number of
allocated buffer/image resources.
2025-08-07 13:40:22 +02:00
Pratik Borhade
0f8f9057a9 UI: Shape key right click context menu
Invoke context menu for shape key with right click.
Added `MESH_MT_shape_key_tree_context_menu`, this include operators
that takes action on selected/active tree items:
- Make Basis
- Duplicate
- Move to Top -> Move After Basis
- Move to Bottom -> Move to Last

See Video in PR description

Pull Request: https://projects.blender.org/blender/blender/pulls/143444
2025-08-07 12:41:26 +02:00
Aras Pranckevicius
2f68e7e4b4 Fix #142912: VSE thumbnail cache processing slows down UI
VSE cache processing was handling thumbnail generation requests in
parallel, however often that was resulting in CPU core over-subscription
that negatively affects user interface smoothness. Process requests
serially; some parts of image/video loading are internally multi-threaded
already. This makes thumbnails load somewhat slower, but while that
is happening the rest of blender feels much smoother, and the CPU
fans don't spin up as much.

Additionally, make the video thumbnail loading code use smallest
available proxy file, if present. This was overlooked in the original
new thumb cache implementation (!126405).

SpriteFright timeline edit v135 (mostly JPG images, some movies),
loading thumbnails for the whole timeline on Ryzen 5950X (Windows):
- 4.2.1: 35 seconds, CPU usage ~35%, UI smooth
- Main: 13 seconds, CPU usage ~90%, UI choppy
- This PR: 19 seconds, CPU usage ~35%, UI smooth

Manually made timeline with 10 video files:
- 4.2.1: 12 seconds, CPU usage ~50%, UI smooth
- Main: 6 seconds, CPU usage ~100%, UI choppy
- This PR: 9 seconds (no proxies) / 4 seconds (with proxies), CPU usage
  ~50%, UI smooth

Candidate for 4.5.x backport

Pull Request: https://projects.blender.org/blender/blender/pulls/144120
2025-08-07 12:33:18 +02:00
Omar Emara
d84d779661 Compositor: Improve unsupported passes warning
This patch improves warnings displayed when the user attempts to use
passes in render engines other than EEVEE with the viewport compositor.

Previously, an error icon was always displayed if the viewport
compositor was in use as well as a viewport overlay text. This error
existed even when the render engine was set to EEVEE and even if the
passes are not actually used, which was always confusing for users.

This patch improves this by only displaying the error when a pass is
actually used and when a non-EEVEE render engine is used.

This is implemented internally as an extra info callback for the node.
And the compositor_unsupported_message member hack was removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/144005
2025-08-07 12:18:06 +02:00
Falk David
4a013194dd Cleanup: Core: Replace FPS scene macro with member function
Replaces the `FPS` macro with `scene->frames_per_second()`.

The macro has two major issues:
* It hides that it depends on a `Scene *` variable named `scene`.
* It makes debugging harder.

This is now replaced with a member function on the scene.

Pull Request: https://projects.blender.org/blender/blender/pulls/144127
2025-08-07 11:30:25 +02:00
Omar Emara
74e23b1c36 Fix: Assert in Keying node with no input
The Keying node asserts if its input is single value or not connected.
This is due to a typo when getting the input, where the output was used
instead.
2025-08-07 12:14:36 +03:00
Pablo Vazquez
840310f607 UI: Add Icons for Edge/Vertex Crease and others
Edge and Vertex marks such as Crease, Bevel Weight, Seam, Sharp, have
specific use cases and colors assigned to them that users get familiar
with over time.

It can be hard to remember which color belong to what, this PR tries to
address this by introducing colored icons that follow the theme setting
for that edge mark/flag.

See PR for details and screenshots.

Pull Request: https://projects.blender.org/blender/blender/pulls/144075
2025-08-07 11:09:56 +02:00
Omar Emara
28e59d3e36 Fix #144070: Keying morphology can not do erosion
The morphology operations in the Keying node in the compositor can no
longer do erosion by using negative Feather and Dilate inputs. Clamping
to positive values was accidentally done when porting options to inputs,
so this patch fixes this by removing the clamping.
2025-08-07 11:56:10 +03:00
Christoph Lendenfeld
1dd06e6623 Fix #143818: Clear Keyframes operator unassigns action
The `ANIM_OT_keyframe_clear_v3d` had a few issues

The reason for the action disappearing was the call to `animdata_remove_empty_action`.
This checked the curves on the action directly, thus failed with the layered actions.

However with the change to the layered action, the convention is that actions are not
unassigned when it is empty. This is why I also added a check for legacy actions before the call.
I am doing this even though legacy actions will be removed in 5.0 because this
needs to be backported.

The third issue was that `changed` was never set to true with layered actions,
which meant the notifier was never sent to update the UI.

Pull Request: https://projects.blender.org/blender/blender/pulls/144001
2025-08-07 10:41:46 +02:00
Campbell Barton
5b78323450 Cleanup: use RNA_def_enum_flag 2025-08-07 18:10:50 +10:00
Clément Foucault
16430b10f1 EEVEE: World Sun Shadow no longer works in 4.5
On some drivers, the GLSL compiler doesn't reflect the omitted
`local_size_*` of a compute shader inside `gl_WorkGroupSize`.

This lead to the 2D size computation of 1D workgroups to become
0 which was bypassing the parallel reduction algorithms.

Ensuring `local_size_*` are always set fixes the issue.

For clarity, also fix the 1D shaders to not use `gl_WorkGroupSize.y`.
This also fix a copy paste error in the Metal backend.

This issue affected AMD drivers on Windows.

Rel #142046

Candidate for backporting to 4.5 LTS.

Pull Request: https://projects.blender.org/blender/blender/pulls/144056
2025-08-07 09:40:57 +02:00
Campbell Barton
936457871e Fix #143980: Invalid default values for RNA enum-flag properties
Enum-flag properties uses non-flag logic to set their default,
often setting the value to the first item in the array passed
to RNA_def_property_enum_items.

The incorrect default was shown in the Python API docs.

Resolve by using the enum values as a mask.
2025-08-07 17:29:28 +10:00
Campbell Barton
e883a6f803 RNA: declare flags before calling RNA_def_property_enum_items
RNA_def_property_enum_items checks for PROP_ENUM_FLAG which
doesn't work if the flag is set afterwards.

This can be enforced - although that can be handled separately.

Needed to fix #143980.
2025-08-07 17:29:28 +10:00
Philipp Oeser
c466d1744b Fix #143231: Vulkan Renders Curve Profile Control Points Incorrectly
Resolve using a shader intended for drawing points.

Pull Request: https://projects.blender.org/blender/blender/pulls/143798
2025-08-07 09:05:16 +02:00
Jeroen Bakker
cd00d8ca00 Fix: Vulkan: Use after free when switching scenes
Unreported issue introduced from recent changes. (memory leak in immediate mode)

Pull Request: https://projects.blender.org/blender/blender/pulls/144116
2025-08-07 08:56:59 +02:00
Campbell Barton
d441a90030 Cleanup: use RNA_def_enum_flag 2025-08-07 16:55:41 +10:00
Jacques Lucke
33a039dbac Fix #143532: Spreadsheet: use-after-free displaying instance tree
The `GeometrySet` was only allocated on the stack but was accessed after the function ended.

Pull Request: https://projects.blender.org/blender/blender/pulls/144085
2025-08-07 08:30:49 +02:00
Campbell Barton
62a38eacb3 Fix #144086: Crash Running "New Scene" in an Empty file 2025-08-07 14:51:33 +10:00
Campbell Barton
08cf60c66e PyDoc: generate a list of types that support custom properties
Methods for `bpy_struct` such as `get()` & `items()` noted that only
some types support custom-properties.

Since these docs were written many more types support custom properties.
Replace the inline list with a link to a generated list since there are
now too many to include inline.

Resolves #141450.
2025-08-07 14:37:38 +10:00
Campbell Barton
0858f68d3c Fix #143905: Creating a face between two edges can make a bow-tie quad
The check that triangles from a quad point away from each other wasn't
sufficient to avoid creating bow-tie quads.

Resolve by picking the most planar triangle pair.
2025-08-07 13:01:36 +10:00
Campbell Barton
5ff6b6b800 Correct error in e6e7f92ce0 2025-08-07 01:06:42 +00:00
Campbell Barton
e6e7f92ce0 Refactor: simplify checks for the user & environment temp directory 2025-08-07 11:02:36 +10:00
Campbell Barton
4958be0394 Cleanup: remove redundant loop 2025-08-07 10:18:23 +10:00
Campbell Barton
b07a1adf04 Core: remove use of the environment variable TMP on Unix
This isn't a standard and seems only to be included for historic reasons.

Ref !144100
2025-08-07 10:17:51 +10:00
Campbell Barton
9fcdf4822a Cleanup: correct comment, remove unused variable 2025-08-07 09:22:10 +10:00
Campbell Barton
87c4f47312 Fix #139585: Blender could erase OS root
Temporary directory handling had a logical error, assuming the
"session" temporary directory was owned and created by Blender
and could be recursively removed on exit.

However, it's possible creating the session sub-directory fails,
in that case the temporary directory was used for the "session".
This meant setting `C:\` as the temporary directory in the preferences
would attempt to recursively remove `C:\` on exit.

Resolve with the following changes:

- Only perform a recursive removal on the temporary directory
  if a session sub-directory was created.

- If the creating the user-preferences temporary "session" sub-directory
  fails fall back to the systems temporary directory and try to
  create the "session" directory there.

  Previously this was only done if the preference path didn't exist.
  The preferences path was still used if it existed but couldn't be
  written to.

Include a test to ensure this is working as expected.

Ref !144042
2025-08-06 23:13:58 +00:00
Hans Goudey
21cbdab34a Cleanup: Pass ReportList instead of wmOperator
This is more flexible and doesn't include unnecessary information.
2025-08-06 17:47:32 -04:00
Campbell Barton
a229d0d08f Fix #143018: Assert browsing a non UTF8 render output path
Use copy_bytes_truncated when copying file paths which may not be UTF8.

Ref !144052
2025-08-07 06:26:50 +10:00
Campbell Barton
accacc65fc BLI_string_ref: add copy_bytes_truncated method
Needed to copy non UTF8 bytes into a null terminated string.

Ref !144052
2025-08-07 06:25:29 +10:00
Campbell Barton
558d1c4774 Cleanup: use the suffix "_maxncpy" instead of "_len" for string sizes
The term "_len" is too easily confused with the strlen(),
excluding the nil byte.
2025-08-07 06:18:21 +10:00
Campbell Barton
53c2ba29a6 Cleanup: use defines for buffer sizes 2025-08-07 06:18:21 +10:00
Campbell Barton
d30cb946fa Cleanup: remove string length argument for proxy path dir access
Move the fixed size to the function signature since it wasn't used
when passed to BLI_path_abs.
2025-08-07 06:14:46 +10:00
Jacques Lucke
d1d07876c6 Fix: Geometry Nodes: wrong structure types in a couple of nodes
This mainly changes field sockets to dynamic and vice versa in a few cases.
2025-08-06 21:37:44 +02:00