Commit Graph

154902 Commits

Author SHA1 Message Date
Harley Acheson
64b4db4a12 Fix #147765: Padding of Quick Tooltips
Some tooltips pop up up instantly with just a word or two and then
expand later to show more information, for example for the Properties
categories. This type of tooltip is not considering padding when
clamping to the window bounds, making it possible for them to be
positioned in such a way that clips some content. This PR just adds
padding to the window bounds.

Pull Request: https://projects.blender.org/blender/blender/pulls/147835
2025-10-10 20:04:27 +02:00
Christoph Neuhauser
abc2cb24c9 Fix: EEVEE: Write to vertex shader outputs to avoid Intel linking errors
eevee_geom_world_vert.glsl and eevee_geom_volume_vert.glsl do not
support shadows, but the shader validation pipeline still compiles the
shadow variant of these shaders. This results in the fragment shader
reading from inputs that are not written to as vertex shader outputs.
On the Intel Windows OpenGL driver, this leads to a shader linking
failure. This PR avoids the issue by writing zeros to the interface
variables when MAT_SHADOW is defined.

Pull Request: https://projects.blender.org/blender/blender/pulls/147821
2025-10-10 19:11:46 +02:00
Nick Alberelli
4f8e4044ae API Documentation: Add note to gpu.shader to explicitly set all uniforms
Fix #103176

Pull Request: https://projects.blender.org/blender/blender/pulls/146860
2025-10-10 18:38:24 +02:00
Harley Acheson
0262b939a0 Fix #147804: Alignment of Playhead parts
With changes to the playhead to correctly draw when separated from the
vertical line (for time stretching) some parts are slightly misaligned.
This PR corrects the vertical alignment of the top of the triangular
part to the number box. It also corrects horizontal alignment of the
vertical line to be pixel-aligned based on the interior, not the shadow
exterior.

Pull Request: https://projects.blender.org/blender/blender/pulls/147825
2025-10-10 18:18:58 +02:00
Janne Nylander
88308e108e Fix #147739: Python animation baking script was checking bone selection from wrong type of bone
The script was checking if a bone was selected via Bone.select.
As of 5.0, this is not available. Instead, PoseBone.select should be used.

Pull Request: https://projects.blender.org/blender/blender/pulls/147743
2025-10-10 17:29:08 +02:00
Nikita Sirgienko
38adb8f1a4 Cycles: oneAPI: Fix duplicated GPU device entries on some setups
In some hardware configurations, it is possible that DPC++ or
Intel Drivers wrongfully report all devices twice. It is already
being worked on internally, and the fixes will be available in
the future - but for now, we need a workaround for this problem
in Blender as well, to ensure that our end-users are not impacted.

Pull Request: https://projects.blender.org/blender/blender/pulls/147731
2025-10-10 17:25:29 +02:00
Christoph Neuhauser
7b5dfdf759 Revert "Fix: EEVEE: Write to vertex shader outputs to avoid Intel linking errors"
This reverts commit 16ad7524a7.
The commit was accidentally pushed to the upstream branch instead of a
fork branch.
2025-10-10 17:23:05 +02:00
Christoph Neuhauser
16ad7524a7 Fix: EEVEE: Write to vertex shader outputs to avoid Intel linking errors
eevee_geom_world_vert.glsl and eevee_geom_volume_vert.glsl do not
support shadows, but the shader validation pipeline still compiles the
shadow variant of these shaders. This results in the fragment shader
reading from inputs that are not written to as vertex shader outputs.
On the Intel Windows OpenGL driver, this leads to a shader linking
failure. This PR avoids the issue by writing zeros to the interface
variables when MAT_SHADOW is defined.
2025-10-10 16:35:30 +02:00
Damien Picard
84fc90bb43 I18n: Extract many messages from ED_push_undo
This function is used to add undo steps. It includes a message, for
use in the Undo History menu. This label uses the "Operator" context
for translation.

This commit adds automatic extraction of two functions `ED_undo_push`
and `ED_undo_grouped_push`, as well as manual extraction for many
strings not declared in the function calls.

In order to extract those messages using the proper context, the
extraction logic had to be changed so that a custom context could be
specified. The regexes can now be either a pattern, or
a (ctxt_override, pattern) tuple.

Pull Request: https://projects.blender.org/blender/blender/pulls/147581
2025-10-10 16:01:35 +02:00
Bastien Montagne
d57d76f23d I18n: Refactor: Introduce class for message regexes, includes ctxt
This new class for C++ message extraction regexes includes an optional
translation context override.
2025-10-10 16:01:34 +02:00
Lukas Tönne
2b01bbd73c Fix #147752: Button swap is missing custom tooltip callbacks
Tooltips could crash where callbacks receive the wrong argument.
This is because the swap function was missing the `custom_tip_func` callback,
but was swapping the callback argument.

Pull Request: https://projects.blender.org/blender/blender/pulls/147806
2025-10-10 15:37:55 +02:00
Jeroen Bakker
93cdea62f6 Fix #146560: Vulkan: Improve multires out of memory issue
This seems like an out of memory issue where the storage
buffer could not be allocated but still used as a destination
for a copy. After an out of memory issue memory can be fragmented
and any allocation can still fail.

On `AMD Radeon(TM) 890M Graphics Advanced Micro Devices AMD`
`24.30.58` I got to multires subdivision level 2+6 using the steps
described in the report. 2+7 is failing for me. 2+6 already requires 16GB
of memory using large chunks.

OpenGL and Vulkan work with other limits and memory models and can
have different behavior. This PR only improves the mentioned issue, but
can still fail in other areas.

Pull Request: https://projects.blender.org/blender/blender/pulls/147713
2025-10-10 15:19:43 +02:00
Philipp Oeser
0a35af2fc0 Fix #147623: Compositor: Impossible to toggle Asset Shelf
In certain scenarios, the Node Editor lacks the `RGN_TYPE_ASSET_SHELF` &
`RGN_TYPE_ASSET_SHELF_HEADER` regions.

That is because the versioning code from 0a0dd4ca37 only creates these
for Node Editors that are Compositors.
That does not seem right. The thing is, if you change a non-node Editor
(e.g. an Image Editor) to a Compositor editor, all is fine (`SpaceLink
*node_create` gets called, the regions set up correctly), but changing
an **existing** node editor (e.g. Shader or Geometry Nodes) to a
Compositor, no new Space gets set up (rightfully so) and we are then
missing the regions.

I dont really see an issue with having the versioning setting up shelf
regions for **all** node editors (the shelf polls will already take care
of it only showing in the Compositor) which is what this PR does.

Now we are in the unfortunate situation that people might have saved
their `startup.blend` (or other files affected by that) in the meantime,
so versioning will not kick in anymore, so we probably have to do
another versionbump (which will happen in `main`).

Pull Request: https://projects.blender.org/blender/blender/pulls/147689
2025-10-10 14:58:02 +02:00
Falk David
15d3ef54ee Fix #147653: Deleting a scene while playing it back causes a crash
The `ScreenAnimData` which is saved to the animation timer on the
screen during playback stores a pointer to the scene that is playing.
When deleting a scene, the next time the timer is triggered this will
result in an invalid pointer de-reference.

This fixes the crash by stopping the playback when a scene is deleted.

Pull Request: https://projects.blender.org/blender/blender/pulls/147687
2025-10-10 14:15:45 +02:00
Omar Emara
41dac157b6 Fix #147786: Crash when connecting menu to float input
Compositor crashes when connecting a menu output to a float input, this
is because no implicit conversion is supported between the two, and no
handling was done in this case. To fix this, we fallback to a default
value for unsupported implicit conversions.

Pull Request: https://projects.blender.org/blender/blender/pulls/147801
2025-10-10 13:52:15 +02:00
Patrick Mours
b168a833af Cycles: Fix OptiX context log no longer showing up
Commit 8392ca915b removed
WITH_CYCLES_LOGGING, but missed that the OptiX context log was
conditionally compiled depending on that definition, so this fixes
that.

Pull Request: https://projects.blender.org/blender/blender/pulls/147706
2025-10-10 13:15:23 +02:00
Clément Foucault
4c97ac9a27 Fix #147168: BLF: Glitchy status bar display
This seems to be a Mesa driver error.

Discarding the buffer before the area drawing fixes the
issue.

Given this is an expensive operation, we try to only do it
where it is needed.

Pull Request: https://projects.blender.org/blender/blender/pulls/147733
2025-10-10 12:58:30 +02:00
Damien Picard
f79165eb7c I18n: Manually extract many node socket menu items
Node menu sockets' items are not currently exposed to RNA, and need to
be extracted manually for now.

Pull Request: https://projects.blender.org/blender/blender/pulls/147579
2025-10-10 11:24:17 +02:00
Aras Pranckevicius
9cbbe1ef73 Fix #147776: VSE strip crop values not scaled to preview/proxy size
1fbd83f72e commit flipped the logic of true vs false, but did not flip
all the usages of it.

Pull Request: https://projects.blender.org/blender/blender/pulls/147792
2025-10-10 10:41:34 +02:00
Jeroen Bakker
ac9de14f03 Fix: Vulkan: Incorrect color attachments
When using a framebuffer without any color attachments there was always
a single color attachment acounted for. This oversight was detected when
looking into #147299.

Pull Request: https://projects.blender.org/blender/blender/pulls/147791
2025-10-10 10:34:03 +02:00
Richard Antalik
61033de969 Fix #146493: Crash after starting playback
Root cause is, that reverse playback would not call
`BKE_sound_play_scene()`, however `BKE_sound_stop_scene()` was called
always.

There was some weird logic in `ED_screen_animation_play()` where
condition for what sound scene was to be stopped exactly was inverted
for sequencer and duplicated for non-sequencer scene. This may also
be incorrect if somebody manages to start playback in active scene, then
create sequencer scene and stop it there.

Fortunately `ScreenAnimData` keeps pointer to scene which started
playback, so this is used to also stop the playback.

To make this code bit more readable, the function was split into
functions starting and stopping the playback, so the logic can also be
simplified a bit.

Finally, `sound_device_use_end_after()` was modified to do sanity check.
If the number of users is already 0, it does nothing and returns.
There assertion to catch this in debug builds.

Pull Request: https://projects.blender.org/blender/blender/pulls/147613
2025-10-10 10:22:55 +02:00
Campbell Barton
224bd118eb Build: resolve error with Python 3.14
Include local version of _PyArg_CheckPositional which is private
for CPython as of Python 3.14.

Ref !147783
2025-10-10 17:53:35 +11:00
Jeroen Bakker
b9dcc087a9 Fix #147604, #146594: Vulkan: Crash on startup
On certain platforms Blender can crash on startup after the update of
VMA. This was because we want to select the correct memory area based on
requirements/preferences, but the overall flag was set to auto.

These options are mutual exclusive. This PR changes the flags to use the
requirements/preferences.

Pull Request: https://projects.blender.org/blender/blender/pulls/147781
2025-10-10 08:42:58 +02:00
Campbell Barton
74bd04e09b Docs: clarify the purpose of the --window-border argument
This read as if it enabled window decorations.

Clarify & update the doc-strings of windowing arguments to be consistent.

Also order their inclusion in --help more logically.
2025-10-10 05:00:26 +00:00
Campbell Barton
578a62cc62 RNA: expose the language enum to Python scripts
As far as I know it wasn't possible for scripts to access language
ID's and their names using documented API's.

Ref !147769
2025-10-10 14:01:28 +11:00
Harley Acheson
f4152fa946 Fix: Resizing Multiple Aligned Minimum Height Areas
Bug report #146812 shows areas being vertically resized incorrectly
when there are multiple areas at minimum height adjacently aligned
at the bottom with the lower one being a SPACE_ACTION-type editor.
So timeline minimized at the bottom with another minimized area
directly above it and then window height is increased. Our code that
scales area vertices has specific code to keep a minimized timeline
at minimum height when at the bottom with increased window height. We
also have code that ensures that all areas are at least minimum height.
These two things conflict in this specific case because they are both
done while relying on area->winy, which is not updated between
operations. This PR uses screen_geom_area_height instead, which uses
screen vertex distances.

Pull Request: https://projects.blender.org/blender/blender/pulls/147764
2025-10-10 02:59:03 +02:00
tariqsulley
5a9f88faee Fix #100993: Snap Selection to Active fails to snap to active parent
The Selection to Active operator failed when the selected object was
parented to the active object. Fix by allowing child objects to move to
the active object unless "Offset" is enabled.

Ref !147204
2025-10-09 23:34:44 +00:00
tariqsulley
2f0d433592 Fix #125822: Armature X-ray prevents other objects from being selected
Armature X-ray overlay prevented selecting other objects even with
"Lock Object Modes" disabled.

Ref !146794
2025-10-09 23:13:35 +00:00
Sean Kim
c415febbbb Fix #147568: Editable image in texture paint slot grayed out
Introdued with a926f5b67d

Pull Request: https://projects.blender.org/blender/blender/pulls/147578
2025-10-09 21:06:31 +02:00
Sean Kim
a0ae015a42 Fix #146671: Weight Paint gradient tool can cause NaN
A combination of a linear gradient with the 'Sphere' distance curve
preset could cause NaN values due to evaluating the sqrt of a negative
value. To avoid this, clamp the input value to a lower bound of 0.0f.
This fixes the Smooth, Sphere, and Inverse Square presets.

Pull Request: https://projects.blender.org/blender/blender/pulls/146693
2025-10-09 21:03:28 +02:00
Clément Foucault
73645a1047 Fix #147542: Overlay: Curve Sculpt Mode: Z-fighting with Cage overlay
The overlay just needed a bit of Z bias to avoid Z fighting.
2025-10-09 19:35:47 +02:00
илья _
bfb0d2ad20 Fix #144846: Mesh triangulation can generate duplicate faces and edges
Mesh invariants imply that edges and faces must be unique, so things
like reversed edges or duplicate faces with equal vertices are invalid.
For this reason, every time we generate new elements we have to ensure
that all new elements are unique between each other and already existing
elements. The recent refactor (ea875f6f32) introduced a new
algorithm to generate new mesh elements, and deduplication of new
elements was also a part of it. The problem is that the deduplication
only guaranteed that the original elements and new elements don't
overlap; deduplication between each new elements is not complete.

To solve the problem both new triangles and new edges have to be
deduplicated, even if there is no duplicates. Just to know this we have
to build a hash sets.

Triangle deduplication is a special part of the triangulation code,
but edges already handled elsewhere in the code base.

This refactor fixes this by replacing the original approach with one
which guarantees distinct faces and edges in the result.

Unfortunately, this fix increases runtime of the node 10x for a simple
cube with 500-vertex sides. It should be possible to make the
performance better again, but that requires more work.

Other work had to be done to enable this, so this depends on:
- [x] 157e7e0351
- [x] fa8574b80b

Co-authored-by: Hans Goudey <hans@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/147634
2025-10-09 19:29:18 +02:00
Hans Goudey
acbd057680 Fix #147680: Crash when voxel size is too small
These grid creation functions can return a grid without data when
certain parameters are invalid. The "set_output" function of the
geometry node execution parameters asserts that the data is
not null, so I assume this is invalid and causes crashes later on.

Pull Request: https://projects.blender.org/blender/blender/pulls/147741
2025-10-09 19:11:50 +02:00
Hans Goudey
8a98c6992f Fix: Run node link pointer repair again
Run the versioning added in dbf777569b.
Another file from #147694 has this issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/147737
2025-10-09 19:08:37 +02:00
Hans Goudey
dc95ec9830 Fix: "Set ID" crash after recent change
Caused by ae2034e6c5

The extra code to handle different domains and types for the ID
attribute didn't handle the case where the field just referenced
the same array as the existing attribute on the goemetry. The generic
"capture field on geometry" utility does handle this, and using it is
preferrable anyway since optimizations can be reused.

Fixes part of #147694

Pull Request: https://projects.blender.org/blender/blender/pulls/147736
2025-10-09 19:03:49 +02:00
Aras Pranckevicius
1973bad86c Fix #147636: VSE compositor modifier output translation has no effect
The final image produced by the compositor can have domain translation
on it (e.g. caused by a Translate or Transform node). Similar to how
the regular compositor viewer node remembers the output domain
translation, do the same in the compositor modifier.

Bubble back that translation up to VSE rendering code, where it is
then added to regular strip transform.

In order to make this "bubble up" part easier, refactored modifiers
so that instead of soup of parameters they all get a struct
ModifierApplyContext with all the relevant data.

Added a new VSE render test that covers various compositor
transformation nodes (translate, rotate, transform, corner pin).

Pull Request: https://projects.blender.org/blender/blender/pulls/147695
2025-10-09 18:36:44 +02:00
Aras Pranckevicius
e60c5475ca Fix: cmake WITH_RUBBERBAND option sanitization
Instead of conditionally defining it only when WITH_AUDASPACE is on
but WITH_SYSTEM_AUDASPACE is off, always define it to ON, and later
on turn it off with set_and_warn_dependency / set_and_warn_incompatible
similar to how all the other options are handled.

Also move it under "Audio" section of cmake configuration print

Pull Request: https://projects.blender.org/blender/blender/pulls/147679
2025-10-09 18:35:38 +02:00
Richard Antalik
74fc101024 Fix #147577: Runtime Error warning on loading default workspace
Caused by null de-reference when accessing `sequencer_scene`.

Return false if sequencer scene is null to indicate, that the path to
strips or modifiers can not be created.

Pull Request: https://projects.blender.org/blender/blender/pulls/147594
2025-10-09 18:01:00 +02:00
Omar Emara
5841cb21f7 Fix #146759: Radial Tilling node crashes in the compositor
The Radial Tilling node crashes in the compositor in GPU mode. This is
because the compositor does not yet support 2D vectors in shader code
generation, but properly supports and expects them in the interface,
which the Radial Tilling node declares. This results in a bad shader
which crashes Blender.

To properly fix this, we need to:

- Support 2D vectors in compositor GPU material shader code generation.
- Support 2D vectors in shader node GPU stack construction.
- Adjust the interface of radial tilling to actually use 2D vectors.

This seems risky for 5.0, so this patch temporarily drops support for
the node in the compositor in 5.0. Then once 2D vectors are supported,
it can be enabled again.

Pull Request: https://projects.blender.org/blender/blender/pulls/147627
2025-10-09 17:23:12 +02:00
Miguel Pozo
f7ef7eff5e Fix: Overlay: Broken outline detection for faces perpedicular to the view
Apply the same fix used for Armatures.

Partially fixes #139555.
For correct flat object detection, #145227 is also needed.

(4.5 backport candidate)

Pull Request: https://projects.blender.org/blender/blender/pulls/147722
2025-10-09 16:58:58 +02:00
Miguel Pozo
83a1bd4e1d Fix #145750: Overlay: Attempt to index a handle range as a single handle
This fixes the resource indexing logic, but it looks like the flat
object outline workaround has been broken since 4.4.

Pull Request: https://projects.blender.org/blender/blender/pulls/147703
2025-10-09 16:58:25 +02:00
Christoph Lendenfeld
d68680ed61 Fix #147709: Use correct property for bone selection in Python
Replace all calls to `pose_bone.bone.select` with
`pose_bone.select` since that is where the property lives now

Pull Request: https://projects.blender.org/blender/blender/pulls/147725
2025-10-09 16:52:06 +02:00
Hans Goudey
5a8d2b6624 Fix #147710: Crash binding Surface Deform modifier to faceless mesh
- Add an explicit check with a better error message than "Out of memory"
- Initialize SDefVert so the later null checks don't try to free
  uninitialized data.

Pull Request: https://projects.blender.org/blender/blender/pulls/147723
2025-10-09 16:49:42 +02:00
Sybren A. Stüvel
dac56a766a Fix #147171: Redoing a pose asset application right after creation fails
Tell the Create Pose Asset operator to create an undo step. This ensures
a subsequent operator can be correctly re-done.

Pull Request: https://projects.blender.org/blender/blender/pulls/147717
2025-10-09 16:14:48 +02:00
Falk David
f9a76822a8 Fix #147437: VSE: Some python operators are broken
Since the introduction of the sequencer scene,
some of the sequencer python operators have
been using `context.scene` when they should be using
`context.workspace.sequencer_scene`.

This fixes `SequencerFadesAdd`, `SequencerFadesClear`,
`SequencerDeinterlaceSelectedMovies`,
`SequencerSplitMulticam`, and `SequencerCrossfadeSounds`.

Pull Request: https://projects.blender.org/blender/blender/pulls/147560
2025-10-09 15:46:05 +02:00
Jacques Lucke
6bf69766aa Fix: making packed data-blocks local does not clear the packed-flag
This fixes the root cause of #147541. However, the file in the report is still
in a bad shape. It needs to be resaved after this patch so that appending the
node group works as expected.

The issue was that making a data-block local did not clear the
`ID_FLAG_LINKED_AND_PACKED` flag.

Pull Request: https://projects.blender.org/blender/blender/pulls/147603
2025-10-09 14:36:34 +02:00
Damien Picard
331ac6157f Cleanup: I18n: Remove unused translation macros
The translated strings literals were empty.

Pull Request: https://projects.blender.org/blender/blender/pulls/147583
2025-10-09 12:09:58 +02:00
Damien Picard
30ee6a27df I18n: Translate a single custom report in quit dialog
Reported by Ye Gui in #43295.
2025-10-09 12:09:56 +02:00
Damien Picard
22f339037a I18n: Translate node tree subtypes
In 73fcbaf7c4, the `node_tree_sub_type` enum was given a custom item
function. The items now need to be extracted manually.

In addition, the translation context for this property, "ID", was
removed since it was not useful at a glance, and likely added by
mistake.

Reported by Ye Gui in #43295.
2025-10-09 12:09:56 +02:00
Damien Picard
86ea2bd1ce I18n: Sort sockets in translation extraction, for stable .po files
Socket names and descriptions were not sorted, which could result in
changes between invocations of the translation extraction script.
2025-10-09 12:09:56 +02:00