Commit Graph

153057 Commits

Author SHA1 Message Date
Bastien Montagne
780b8ee415 Fix #144592: FBX exporter: Invalid memory access when exporting tangents.
Since the tangent attributes are now recomputed inside the loop over uv
layers, looping directly over this mesh data is dangerous, as computing
the tangents attributes might trigger some re-allocations, leading to
invalid memory accesses when accessing the next uv layer.

Solved by caching uv layers' names in a list beforehand, the uvlayers
themselves are not even needed for tangent data handling.

Regression from e0a9e98cbd.
2025-08-15 12:29:28 +02:00
Casey Bianco-Davis
18da9cc777 Fix #142644: Grease Pencil: Subdivide Modifier not smoothing first point when cyclical
The problem was that the `Subdivide Modifier` would not apply catmull clark
smoothing to the first and last points when a curve was cyclical.

This also fixes a mistake were the smoothing would read from the same data
as writing, leading to the shape to be skewed.

Pull Request: https://projects.blender.org/blender/blender/pulls/144529
2025-08-15 12:19:41 +02:00
Jeroen Bakker
731d257cf4 Fix #144542: Workbench DoF crash when using Vulkan
The depth of field shader create info contained a resource that wasn't
used in the shader or fulfilled. In the Vulkan backend the shader resource
list is used in the outer loop to find out which resources needs to be
requested. As this resource didn't exist it asserted in the Vulkan backend
for incorrect usage.

Pull Request: https://projects.blender.org/blender/blender/pulls/144606
2025-08-15 11:50:38 +02:00
Campbell Barton
3be9f89ad3 Cleanup: quiet unused warning & correct typo 2025-08-15 18:55:52 +10:00
Jeroen Bakker
ea633b930f Fix #143989: Vulkan: Text drawing performance
Text drawing can be improved. At this moment a vertex buffer is
allocated for 2048 chars. When drawing a string the vertex buffer is
filled from the beginning with the string to draw. The next string will
replace the chars of the previous string. This locks up GPUs as the data
can only be overwritten when the buffer isn't used anymore.

Vulkan backend had an issue that uploading the new data would always
send over 2048 chars even when some chars were only used. By fixing this
the scene in the report went from 0.6 fps to 2.6 fps. OpenGL is 6 fps as
vulkan has to manage a rendergraph with 100.000 of nodes.

Text drawing performance can be improved by continue using the space of
the vertex buffers. In this case more drawing calls can be done, before
the vertex buffer needs to be updated.

Pull Request: https://projects.blender.org/blender/blender/pulls/144604
2025-08-15 10:36:27 +02:00
Julian Eisel
17f1c055da WM: Add message type for remote downloader messages to message bus
We plan on using this for online assets (see blender/blender!130543), to
send status updates with a URL to identify the online library remote.
In future this can be expanded for multiple kinds of messages with
differing data, like progress reports, sub-resource download messages
(e.g. individual assets), etc.

While this will only be used for online assets for the start, I imagine
we'd want these same kind of status messages for other remote
resources. Hence the name `WM_MSG_TYPE_REMOTE_IO`.

Pull Request: https://projects.blender.org/blender/blender/pulls/144567
2025-08-15 10:30:33 +02:00
Jeroen Bakker
1f1098c498 Vulkan: Remove MoltenVK
Blender had some support for using MoltenVK. However there are some key
issues why MotlenVK cannot be used. Bugs have been reported up-stream.
As it doesn't work and holds back regular developments it will be removed
from the main branch.

Any efforts on making Vulkan run on Apple (including KosmicKrisp)
is considered a community effort and can be done in a development
branch.

Pull Request: https://projects.blender.org/blender/blender/pulls/144602
2025-08-15 09:36:38 +02:00
Ramon Klauck
d388b807a3 VSE: Clear Strip Keyframes from Preview
This PR makes it easier to clear keyframes from strips in preview.
It is the similar to the feature in 3D viewport. Just navigate to
"Strip" -> "Animation" -> "Clear Keyframes...". This then deletes
all keyframes form the selected strips.

Pull Request: https://projects.blender.org/blender/blender/pulls/141106
2025-08-15 05:37:39 +02:00
Richard Antalik
bd4a7ef577 Fix #144332: VSE solo preview does not work
`render_give_ibuf_direct()` just called `seq_render_strip()`, which
tried to get image from intra frame cache. This always succeeded,
because the intra frame cache does not accept timeline frame argument.

Using intra frame cache here is incorrect. Source cache must be used.
If source cache lookup fails, intra frame cache must be invalidated
before calling `seq_render_strip()`.

Pull Request: https://projects.blender.org/blender/blender/pulls/144396
2025-08-15 03:44:38 +02:00
Campbell Barton
a111a258b5 Fix: add ThemeCommonAnim to XML secure types
Follow up to !144580.
2025-08-15 11:01:32 +10:00
Nika Kutsniashvili
6526f83fed Fix #144579: "Commons" theme settings fail to load from XML
Add common theme panel in XML secure types.

Ref !144580
2025-08-15 00:51:34 +00:00
Hans Goudey
814d04aaf9 Attributes: Reset various runtime data for writing files
These fields are always reset at runtime. Writing zeros should be easier
to compress since a lot of other data is zeroed, and it also makes it
easier for developers to filter out noise when looking at data buffers.

Pull Request: https://projects.blender.org/blender/blender/pulls/144582
2025-08-14 23:39:16 +02:00
Sean Kim
3846f0e0b0 Cleanup: Rename and add comment for RadialControl#initial_mouse
Attempt to clarify that this value is not the raw initial event so that
usage is more clear during operator processing.

Pull Request: https://projects.blender.org/blender/blender/pulls/144519
2025-08-14 21:13:40 +02:00
Clément Foucault
13d25a5cfc GPU: Shader: Fix parser not being consistent
Using `std::sort` does not garantee the initial
order is kept for items with the same ranking value.

Using `std::stable_sort` fixes the issue.
2025-08-14 20:43:25 +02:00
Bart van der Braak
0c69fb5f9f GitHub: Add copy of README with GitHub mirror info
Pull Request: https://projects.blender.org/blender/blender/pulls/144539
2025-08-14 20:02:48 +02:00
Julian Eisel
ea9e390f69 Cleanup: Improve & correct comment for asset system file flag 2025-08-14 18:18:47 +02:00
Bastien Montagne
45fadf8297 UI: Prevent 'liboverride' 'decorator' button to control keyframes.
AFAIR, originally the decorator widget was supposed to be also usable to
control overrides.

However, this was never finished (even design wise, not sure how this would
have worked and not conflicted with the animation part of it).

So for now, apply the same behavior as with driven properties: when a
property is liboverridden (but not animated), do not allow to define or
remove keyframes.

This commit also refactors the handling of decorator action, to
deduplicate the logic deciding whether a decorators is 'active' and can
control keyframes, or not.

Pull Request: https://projects.blender.org/blender/blender/pulls/140872
2025-08-14 18:09:38 +02:00
Bastien Montagne
1e2f16c4aa UI: Remove liboverride UI dead code, improve UI messages.
The various operations of liboverride have never been effectively
exposed, remove them from the UI code at least.

Also rename related operator and UI messages to use the typical `Add`
naming (`Add Override` etc.).
2025-08-14 18:09:37 +02:00
Falk David
d50c0b7942 Cleanup: Fix compiler warning
This was caused by 8c3e81bd9b.
2025-08-14 18:08:20 +02:00
Bastien Montagne
6db4f0eb7d Fix unused warning in release builds. 2025-08-14 18:02:57 +02:00
Sergey Sharybin
cfd04172c9 Fix #144521: Unable to fetch LFS objects on make update with Glthub mirror
The setting is called `lfs.remote.searchall`, the `remote` part of it being
an exact string, it is not to be expanded with the name of the remote.

Whenever name of the remote is to be used Git documentation uses `<remote>`
syntax.

Tested by triggering the original issue (clone the Github mirror, make update,
wait for a new LFS object appear in the upstream, make update again). Before
this change the LFS object will not be fetched, and based on the Git Curl's
log only the github origin was used to fetch LFS object, none other remotes
were tried.

Also confirmed by checking the Git-LFS code:
https://github.com/git-lfs/git-lfs/blob/v3.7.0/config/config.go#L232

Pull Request: https://projects.blender.org/blender/blender/pulls/144574
2025-08-14 17:51:52 +02:00
Christoph Neuhauser
7c7af11b9b Tests: Turn VSync off for performance tests
To avoid timings being capped at the display refresh rate.

Ref #143049

Pull Request: https://projects.blender.org/blender/blender/pulls/144555
2025-08-14 16:39:29 +02:00
Weizhen Huang
df496eb894 Cycles: use one-tap stochastic interpolation for volume
It has ~1.2x speed-up on CPU and ~1.5x speed-up on GPU (tested on Metal
M2 Ultra).

Individual samples are noisier, but equal time renders are mostly
better.

Note that volume emission renders differently than before.

Pull Request: https://projects.blender.org/blender/blender/pulls/144451
2025-08-14 15:22:44 +02:00
Weizhen Huang
0c371ca3c5 Cycles: use deterministic linear interpolation for velocity
Cubic is too costly, stochastic interpolation is inaccurate.
2025-08-14 15:22:43 +02:00
Christoph Lendenfeld
bc93123461 Refactor: Use function overload for bone_is_visible
No functional changes intended.

This brings `bone_is_visible` in line with `bone_is_selected`,
by using function overloading instead of suffixing with either
`pchan` or `editbone`.

Pull Request: https://projects.blender.org/blender/blender/pulls/144558
2025-08-14 14:50:28 +02:00
Pratik Borhade
46ed83c386 Cleanup: Use event parameter
Mistake in a559fb833c after moving code from exec to invoke callback

Pull Request: https://projects.blender.org/blender/blender/pulls/144549
2025-08-14 14:45:38 +02:00
Casey Bianco-Davis
b056d3c85c Grease Pencil: Export other curve types to SVG
This adds support for bézier, NURBS and catmull rom curve
types in SVG exporting.

Note: strokes without uniform width will still be exported as
polylines. This is because the outline code currently does not
support bézier curves.

Pull Request: https://projects.blender.org/blender/blender/pulls/141594
2025-08-14 13:51:27 +02:00
Casey Bianco-Davis
8c3e81bd9b Fix: Grease Pencil: SVG and PDF bounding box size bug
Some times when exporting, the bounding box would have a size of zero.
This made it so that no points were visible.

This PR fixes the bounding size by using the already existing
`ed::greasepencil::retrieve_visible_strokes` function.

Pull Request: https://projects.blender.org/blender/blender/pulls/144516
2025-08-14 13:46:33 +02:00
Jeroen Bakker
7286885789 Vulkan: Update VMA to 3.3.0
Updated to latest release. Has some fixes and a new API for easy
integration with Volk.

Pull Request: https://projects.blender.org/blender/blender/pulls/144434
2025-08-14 13:20:45 +02:00
Bastien Montagne
1adb07200c Fix (unreported) assert issue in memfile undo code.
Embedded IDs never get tagged as 'unchanged', since this status is
always the same as for their owner ID.

So far, this assert was never reached, which would indicate that IDs
using embedded data are never detected as unchanged. Hopefully work like
the 'pointer stability' on blendfile writing (!127729) will improve this
situation.

The problem was triggered in upcoming packed data code, where packed IDs
are managed like regular local ones on memfile undo (and not like
regular linked ones). But in that case it looks like packed materials
and such are properly detected as unchanged...
2025-08-14 13:09:25 +02:00
Casey Bianco-Davis
44a2708c0e Fix #139094: Grease Pencil: Primitive Tools not initializing u_scale attribute
The `Primitive Tools` would not initializes the `u_scale` attribute,
making it so that the attribute would default to `0.0f` when new
strokes were drawn the the draw tool.

Pull Request: https://projects.blender.org/blender/blender/pulls/144524
2025-08-14 12:29:20 +02:00
Casey Bianco-Davis
fd7bb7f9c3 Fix: Grease Pencil: Bézier handles not effected by Snap To Grid
This makes it so that bézier handles will be snapped to the grid,
same as the control points.

Pull Request: https://projects.blender.org/blender/blender/pulls/144517
2025-08-14 12:27:21 +02:00
Casey Bianco-Davis
baaa180ba1 Fix #131108: Reproject Strokes Operator does not project bézier handles
This makes it so that bézier handles are projected correctly when
using the `Reproject Strokes` operator.

Pull Request: https://projects.blender.org/blender/blender/pulls/144518
2025-08-14 12:20:08 +02:00
Nikita Sirgienko
21cba7024c Cycles: oneAPI: Disable L0 copy optimization for several dGPUs
Currently, it was discovered that in the case of several different
Intel dGPUs being present in the system, the experimental L0 copy
optimization does not work correctly in the Intel Driver, which is
causing crashes in the driver and Blender application. So, to avoid
this situation and restore functionality on these platforms,
a workaround was added to disable this extension from being used if
such a configuration is detected. In the future, when this problem is
fully fixed in all Intel Drivers, this workaround can be removed from
the Blender source code to restore some performance that was lost on
configurations of several dGPUs because of this workaround.

Pull Request: https://projects.blender.org/blender/blender/pulls/144262
2025-08-14 12:14:51 +02:00
Sergey Sharybin
3c4e48e8ca Fix: Use of uninitialized variables in Mantaflow
A constructor of the MANTA() constructor is only default-initializing
some of the fields, while initializeRNAMap() access to all of the fields,
causing access to uninitialized variables.

For example, mResXMesh is only initialized within some conditions about
mUsingLiquid and mUsingMesh but is always used to set value in the map.

Additionally fixed re-reference of iterator which equals to end(): the
iterator in such case does not contain value and it should not be accessed.

Pull Request: https://projects.blender.org/blender/blender/pulls/144502
2025-08-14 10:57:27 +02:00
Jeroen Bakker
7d384b4a01 Fix #143691: Out of bounds 2d painting
When doing 2D image painting the region on the GPU that is updated could
be out of bounds of the texture, resulting in a crash. This PR fixes
this by clamping the gpu region to update to the actual image size.

Pull Request: https://projects.blender.org/blender/blender/pulls/144545
2025-08-14 10:55:26 +02:00
Thomas Dinges
b60ed07236 Cleanup: make format 2025-08-14 07:59:45 +02:00
Campbell Barton
99bcf746a0 Cleanup: remove header added last commit 2025-08-14 15:19:58 +10:00
Campbell Barton
5540b9440a CLI: move VSync from an environment variable to an argument
Add a command line argument --gpu-vsync on/off/auto.

Prefer command line arguments for GPU settings,
as it means the value is error checked and set when Blender starts.

Also refactor GHOST_Context to take a parameter argument which
includes the stereo-visual & debug arguments and includes the newly
added vsync setting. This makes it possible to add GPU context
parameters more easily in the future.

It also removes redundant parsing & setting the VSync setting for
off-screen contexts.

Changes to recent PR !143049.

Ref !144473
2025-08-14 05:16:12 +00:00
Campbell Barton
248a9653f6 Fix: exception types in last commit
Missed changing exception types & messages in
25c69382fc.
2025-08-14 13:10:30 +10:00
Campbell Barton
25c69382fc Fix: frozen mathutils Vector & Matrix types could be resized
It's important that frozen types are immutable, add a generic
check that mathutils types can be resized and check the frozen flag.

Also correct the exception types when Vector's cant be resized,
using a ValueError instead of a TypeError as the type is correct.
2025-08-14 12:56:48 +10:00
Campbell Barton
3198b336e1 GHOST/Wayland: only disable VSync when using the OpenGL backend
Also add a reference to SDL's bug report and some notes.
2025-08-14 01:13:30 +00:00
Campbell Barton
e06f9be733 Fix crash switching workspaces without an active object
Oversight in !142284.
2025-08-14 10:24:33 +10:00
Casey Bianco-Davis
64f5e3ac10 Fix: Grease Pencil: Attribute interpolate with randomization
The `Radius`, `Opacity` and `Vertex Color` attributes were not
getting interpolated when randomization was turned on.

The problem is most visible on the end tapers of strokes.

Pull Request: https://projects.blender.org/blender/blender/pulls/143878
2025-08-13 23:25:50 +02:00
Sean Kim
8b1f2dfc45 UI: Prevent automatic mode switching in certain scenarios
This commit effectively reverts 8d9bf47ba6
and reimplements the check at a more generic / higher level.

After the above commit, Sculpt Mode was unique compared to the other
modes in how visibility is handled, leading to inconsistencies in
behavior in Blender as a whole.

In general, we do not prevent visibility changes of objects no matter
the mode, from the outliner or otherwise, so preventing entry at the API
level solves the problem highlighted in the original commit at an
incorrect level.

While the above may be changed in the future, for now, keeping this
behavior consistent across different object modes is better than the
alternative, and preventing specialized workspaces from being entered
based on the visibility solves the original issue in a more coherent
way.

Pull Request: https://projects.blender.org/blender/blender/pulls/142284
2025-08-13 22:06:30 +02:00
Bastien Montagne
08a38e8439 Cleanup & Refactor: BKE_libblock_find_name API.
Simplify both `BKE_libblock_find_name_and_library` and
`BKE_libblock_find_name_and_library_filepath` by only searching for a
matching Library ID, and calling `BKE_libblock_find_name` to finalize
the search.

This factorize most of the search logic, and happens to fix a bug in
`BKE_libblock_find_name_and_library`, which would errosneously early-
return `nullptr` in case it found a name-matching local ID, when a
linked one was looked-up for.

Also added minimal documentation to these functions, especially for the
'library' part of the search parameters.

Pull Request: https://projects.blender.org/blender/blender/pulls/144505
2025-08-13 19:05:59 +02:00
Laurynas Duburas
2f274a5f61 Fix: Curves: Transformation center when single point handles are selected
Fixes transformation center when single point handles are selected.
Also converts auto  handles to aligned handles when a single point is
scaled or rotated.

Pull Request: https://projects.blender.org/blender/blender/pulls/144423
2025-08-13 18:54:43 +02:00
Brecht Van Lommel
585af15979 Fix: HDR video output does not preserve the view transform
The float buffer should be tagged with the standard untonemapped colorspace,
so that when we convert to PQ/HLG the tonemapping is preserved.

With this change:
* Using AgX highlights properly go to white.
* Using the ACES configs, we can convert EXRs to a HDR video, exactly
  matching colors with the HDR video on https://dpel.aswf.io/solemates/.

Pull Request: https://projects.blender.org/blender/blender/pulls/144493
2025-08-13 18:36:16 +02:00
Brecht Van Lommel
7b81213ee9 Refactor: Disambiguate default and standard view transform
The name "default" was used both for the default view transform to be set in
the color management settings, and the standard untonemapped view transform.

Pull Request: https://projects.blender.org/blender/blender/pulls/144493
2025-08-13 18:35:09 +02:00
Brecht Van Lommel
11d16737c8 Color Management: Recognize ACES config un-tone-mapped view
Besides "Standard" as in the Blender config, now also recognize
"Un-tone-mapped" as the default view settings to be used for cases like
the 3D viewport solid draw type.

Pull Request: https://projects.blender.org/blender/blender/pulls/144493
2025-08-13 18:35:08 +02:00