Commit Graph

153614 Commits

Author SHA1 Message Date
Harley Acheson
91997ea89f UI: Save Temp Window Sizes & Positions
Allow temporary windows (like File Browser, Preferences, Render,
Drivers, Info) to open at their last positions and sizes.

Pull Request: https://projects.blender.org/blender/blender/pulls/104727
2025-09-05 00:05:50 +02:00
Mattias Fredriksson
ccd8926717 Curves: Simplify calculation of NURBS basis functions
Replaces current basis function calculation which seems to be a direct
implementation of the recursive NURBS formulation. New implementation
avoids the need to check for zero divisions during iteration. Out of
bounds checks are also converted to asserts, assuming input provides
valid span index.

Performance wise this nets a 7+% performance improvement with the
average result being as fast or faster then the fastest execution
from previous implementation!

Pull Request: https://projects.blender.org/blender/blender/pulls/144457
2025-09-04 21:49:58 +02:00
Jonas Holzman
fff3af04c4 UI: Nodes: Rename Shader / Compositing RGB nodes to Color
This PR renames the Shader and Compositing RGB nodes to unify them with
the Geometry Color input node. The Compositing node output socket was
also renamed from "RGBA" to "Color" following other nodes. This is a
5.0 breaking change as part of #96219

Pull Request: https://projects.blender.org/blender/blender/pulls/140495
2025-09-04 21:42:53 +02:00
илья _
7915ce5b1c Cleanup: Redundant template parameterization
Pull Request: https://projects.blender.org/blender/blender/pulls/145052
2025-09-04 21:32:24 +02:00
Eitan Traurig
6564f33eb3 Core: Add hashing support to Array data structure
Implements hashing with the same implementation as the `Vector` data
structure. Hashing requested in PR review of #145531.

Pull Request: https://projects.blender.org/blender/blender/pulls/145689
2025-09-04 20:44:01 +02:00
Harley Acheson
923b5f88ba UI: Status Bar Improvements for Sculpt Expand Operator
Changes to the status bar display when using the Sculpt Expand
operator, which currently takes up too much horizontal space. This
mostly removes "toggle", combines some increase/decrease keys, etc.

Pull Request: https://projects.blender.org/blender/blender/pulls/145009
2025-09-04 20:34:54 +02:00
Sean Kim
6e75d59c7f Fix #145733: Multires undo doesn't work
Introduced with 8536fd1223

Pull Request: https://projects.blender.org/blender/blender/pulls/145744
2025-09-04 20:20:50 +02:00
Harley Acheson
83e59eea9c UI: Touch-Capable Area Maintenance
This PR allows area maintenance that is compatible with touch
interfaces. The top-left action zone is widened to minimum hitspace,
shown as a "gripper" icon. A simple press brings up a menu with area
maintenance options, including split, docking, tear off, maximize, and
Close.

Pull Request: https://projects.blender.org/blender/blender/pulls/144591
2025-09-04 18:12:26 +02:00
Habib Gahbiche
f518f2ea67 Python: Nodes: deactivate_viewer() affects active viewer only
It is assumed that within a node tree at most one viewer is active at a
time, see also `node_tree_set_output()`. So we ignore selection when
deactivating a viewer and rely on the active node from context instead
to decide which viewer node should be deactivated.

Motivation: #145506  and #145509
Pull Request: https://projects.blender.org/blender/blender/pulls/145505
2025-09-04 17:55:53 +02:00
Falk David
8571dfa881 Cleanup: VSE: Add read/write callbacks to strip modifiers
This replaces the hardcoded function with modifier type callbacks
to make it easier to customize the reading/writing
for custom modifier data.
No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/145737
2025-09-04 17:27:42 +02:00
Harley Acheson
048447dcc2 UI: Dyntopo Confirmation Improvements
Enabling Dynamic Topology can result in a warning message when there
are existing attributes or modifiers. Unfortunately this warning looks
like an alert (single OK button) but is actually a confirmation. That
it operates when you click the single button is not clear. Nor is it
clear how to cancel. This PR replaces this with the current style of
confirmation, with clear execution and cancel buttons.

Pull Request: https://projects.blender.org/blender/blender/pulls/145534
2025-09-04 17:15:34 +02:00
Ido-Shahar
1df4aa4e11 Nodes: Node Wrangler: Support for string sockets in merge operator
Added support for string sockets in `nw_merge_nodes`, results in
creating "Join Strings" node. Note that the code is slightly different
from most socket types since String Join has a multi-input socket,
but the behaviour is pretty much identical to Geometry sockets with
Join Geometry.

Pull Request: https://projects.blender.org/blender/blender/pulls/145507
2025-09-04 17:01:20 +02:00
Patrick Mours
b4bb075285 Cycles: Flip image vertically before passing to OptiX denoiser to improve result quality
Experiments have shown that the OptiX denoiser performs best when
operating on images that have their origin at the top-left corner,
while Blender renders with the origin at the bottom-left corner.
Simply flipping the image vertically before and after denoising is a
relatively trivial operation, so this patch introduces this as an
additional preprocessing and postprocessing step for denoising when the
OptiX denoiser is used. Additionally, this patch also removes an unused
helper function, now that OptiX 8.0 is the minimum.

Pull Request: https://projects.blender.org/blender/blender/pulls/145358
2025-09-04 16:04:23 +02:00
Campbell Barton
7250eef0a3 Cleanup: pass const context to CTX_py_init_get 2025-09-04 23:05:17 +10:00
Falk David
866fcd0a09 VSE: Update Strip Modifier UI
This PR updates the VSE strip modifiers interface.
It now uses the same design as the object modifiers.

Changes:

* Except for the "Mask Input" subpanel, the modifier UIs are unchanged.
* Modifiers can now be rearranged using drag & drop.
* Additionally, there is now an active strip modifier. This is exposed
   though python via `strip.modifiers.active`.

This is in part for !139634 which needs the concept of an active modifier.

Notes:

* The `modifier.cc` file included all the implementation of all modifiers.
   With the addition of a another new callback in this PR, this file was
   getting quite big so I split everything out into individual files for all
  modifiers. The modifiers are getting registered at launch.
* The modifier panels are getting added using a UI template
  (`template_strip_modifiers`) very similar to the object modifiers.

Pull Request: https://projects.blender.org/blender/blender/pulls/145367
2025-09-04 15:01:57 +02:00
Philipp Oeser
7f94b86038 Fix #145190: Armature Symmetrize not symmetrizing Viewport Display
If the mirror bone was already existing, it was not copying over
`Display As` (which was reported) but also `Bone Color` was not
transferred.

Since the second does not suit _all_ workflows, this was made
optional (defaulting to OFF).

Pull Request: https://projects.blender.org/blender/blender/pulls/145221
2025-09-04 14:54:39 +02:00
Aras Pranckevicius
c249a11922 Cleanup: update ufbx to latest version
No behavior changes, only a tiny warning fix for some gcc versions.
And it is nicer to be on latest tagged release instead of
in-development state.

Pull Request: https://projects.blender.org/blender/blender/pulls/145727
2025-09-04 14:40:13 +02:00
Jeroen Bakker
a3621841e0 Refactor: GHOST_ContextVK
Improving readability of GHOST_ContextVK

- Introduces GHOST_Extensions for a common interface to device/instance
  extensions
- Introduces GHOST_InstanceVK for instance based API (used to be part of
  GHOST_DeviceVK)

During the refactor found out that the generic queue family would always
be 0, this is most of the time the case, but could lead to issues when
setting up more complex setups.

Pull Request: https://projects.blender.org/blender/blender/pulls/145721
2025-09-04 14:12:55 +02:00
Hans Goudey
5418f0bc68 Fix: Geometry nodes reorders attributes in some cases
Currently attribute names are often added to a hash map that doesn't
maintain the original order. This is convenient for developers but it's
better for users if attributes aren't arbitrarily reordered. Instead,
use `VectorSet` which gives the benefit of a hash map but maintains the
insertion order. The main downside is the loss of O(1) removal which we
benefited from in a few cases. I used string comparison instead for now.

Fixes #144491, #122994

Pull Request: https://projects.blender.org/blender/blender/pulls/145668
2025-09-04 13:59:44 +02:00
илья _
aee7943c06 Fix #145691: Geometry Nodes: anonymous attributes not always propagated in Set Mesh Normal node
Pull Request: https://projects.blender.org/blender/blender/pulls/145693
2025-09-04 13:31:50 +02:00
илья _
8dd2c458cc Fix: Geometry Nodes: anoymous attributes are not always propagated in Trim Curve node
Pull Request: https://projects.blender.org/blender/blender/pulls/145694
2025-09-04 13:28:53 +02:00
Sean Kim
cc5d111078 Cleanup: Remove legacy Grease Pencil python code
A number of panels referred to the `.greasepencil_paint` and
`.greasepencil_sculpt` context members, each of which only correspond to
the legacy tooling. This commit removes such panels and their helper
classes.

Pull Request: https://projects.blender.org/blender/blender/pulls/145708
2025-09-04 11:22:40 +02:00
Campbell Barton
75a3dad4b9 Fix #145714: mesh.validate() asserts editing immutable layers
Ensure corners layers are mutable, was only called on face-data.
2025-09-04 19:00:30 +10:00
Janne Nylander
09c16e0121 Fix #138340: Vertex group names not transferred when erasing or trimming
Trimming or erasing a grease pencil drawing would break the weights
because `vertex_group_names` wasn't transferred appropriately.
This PR adds deform group copying to `compute_topology_change`,
where other variables are transferred.

Pull Request: https://projects.blender.org/blender/blender/pulls/145516
2025-09-04 10:49:43 +02:00
Christoph Lendenfeld
debd0c0877 Anim: Remove deprecated property from POSELIB_OT_create_pose_asset
This breaks backwards compatibility.
The property `activate_new_action` of the `POSELIB_OT_create_pose_asset`
operator was deprecated previously and is no longer in use.
Removing it just breaks any uses of that operator via Python
is they pass that property.

Pull Request: https://projects.blender.org/blender/blender/pulls/145587
2025-09-04 09:36:19 +02:00
Jeroen Bakker
41bcdb26dc Fix #144887: Vulkan: Crash when downloading large images
Even when a device is capable to allocate a buffer with a certain size
it can still fail the allocation due to driver internals. This could be that
the memory area doesn't support the required flags or fragmentation.

This PR changes downloading GPU textures to CPU to use at max buffer
sizes of 2GB. Larger textures will be split over multiple buffers.

Pull Request: https://projects.blender.org/blender/blender/pulls/145568
2025-09-04 09:31:20 +02:00
Campbell Barton
16246d06d5 Fix: missing newlines loading 3D text from older blend files
Resolve regression in [0] which removed checks for `\r` without
versioning blend files.

[0]: c742a4b62b
2025-09-04 17:08:48 +10:00
Campbell Barton
a590e4fa6b Cleanup: correct comments, add __all__ to bl_pyapi_prop_array.py 2025-09-04 16:55:41 +10:00
Campbell Barton
8def618fd9 Cleanup: quiet unused argument warnings on macOS 2025-09-04 16:49:54 +10:00
Aras Pranckevicius
e632d7992f Fix: compile warning when building without ffmpeg 2025-09-04 09:48:31 +03:00
Aras Pranckevicius
2b01753170 ffmpeg: cap maximum thread count to 16
ffmpeg internals log a warning when telling it to use more than 16
threads, so cap thread count to that.

Testing the change locally on Ryzen 5950X (where it was using 32
threads previously), capping at 16 is actually faster:
- Playback of one 4K video downsampled at 1080 res:
  seq_render_strip_stack average 9.12ms -> 7.83ms
- Playback of two blender 1080p videos: seq_render_strip_stack
  average 5.79ms -> 4.94ms

I suspect this might be because this CPU has 16 physical cores
with SMT (so 32 "logical" threads), and depending on the workload
capping at number of physical cores might be better.

Pull Request: https://projects.blender.org/blender/blender/pulls/145665
2025-09-04 08:21:52 +02:00
Campbell Barton
f508d676db Cleanup: unused argument warning 2025-09-04 15:59:40 +10:00
Jacques Lucke
df68dc5768 Nodes: remove writing legacy node group interface
When panels in node groups were introduced, the interface data of a tree was
moved from `tree.inputs_legacy/outputs_legacy` to `tree.tree_interface`. For
forward compatibility, the old interface was still written. Since Blender 4.5
can read the new format and older versions are not able to open files created in
5.0 directly anymore, it's fine to remove this forward-compatibility code now.

Also fixes #145278.

Pull Request: https://projects.blender.org/blender/blender/pulls/145489
2025-09-04 06:45:32 +02:00
Harley Acheson
b538aad192 UI: Improved Enforcement of Minimum Area Height
With the changes to area border drawing and the addition of selectable
border width it is possible to get areas that are below header height
while moving them around. This PR just tightens that up so they always
remain at least the minimum height.

Pull Request: https://projects.blender.org/blender/blender/pulls/145704
2025-09-04 04:06:59 +02:00
Harley Acheson
ac6f290720 UI: Don't Show Region AZone for Tiny Areas
This just removes region disclosure action zones when the area is too
small to be useful.

Pull Request: https://projects.blender.org/blender/blender/pulls/145700
2025-09-04 03:34:02 +02:00
Mattias Fredriksson
1789a7c3d1 Fix #145600: UV Editor crash with Text objects
Introduced with e02eb13a59

Pull Request: https://projects.blender.org/blender/blender/pulls/145601
2025-09-04 02:50:27 +02:00
илья _
6c51993aa3 Geometry Nodes: COW Elision for attribute default filling
Avoid `*_for_write` calls if will not perform any write actions later.
This is a theoretical optimization, only in some fairly specific
situations though.

Pull Request: https://projects.blender.org/blender/blender/pulls/145540
2025-09-04 02:41:55 +02:00
John Kiril Swenson
a4b7b7ed3b Fix: VSE: Mirror operations invoking instead of immediately executing
Mirror menu added in #142506 forgot to account for this case.
To fix, ensure that only interactive mirror invokes.
2025-09-04 01:00:20 +02:00
Sean Kim
996492515d Cleanup: Fix typo in FalloffPanel
Pull Request: https://projects.blender.org/blender/blender/pulls/145695
2025-09-04 00:57:50 +02:00
Harley Acheson
726b1ed8ad Fix #143617: Do Not Draw Tiny Regions
Flag regions that are only a couple pixels tall as "too small" so they
are not drawn.  The previous border drawing overwrote the outer pixels
of the area but the new drawing does not, which can sometimes show a
single line of pixels when the area is minimized to just header height.

Pull Request: https://projects.blender.org/blender/blender/pulls/145696
2025-09-04 00:19:44 +02:00
John Kiril Swenson
426e45effa Fix: VSE: Slip always cancels
PR #143513 forgot to grab the scene from `CTX_data_sequencer_scene`
since this was before the sequencer scene patch landed.

So if the scene differed from the sequencer scene it would find the
wrong strips to slip.
2025-09-03 15:59:31 -05:00
Richard Antalik
a745d6cc69 Fix: Strips are moved when adjusting properties in redo panel
This was caused by incorrectly implemented store/restore mechanism for
`move_strips` property. The property was restored to original state
immediately after strip was added when using drag and drop. So when any
other property was modified, on redo the modal move operation would
start.

The store/restore mechanism was removed, because it is possible to only
rely on checking whether invoke function was called by drag event.

The move strips property is now hidden in redo panel, because it does
not make sense to ever change it there. This is done by setting hidden
`skip_move` property and setting `move_strips` property hidden flag.

Another slightly related bug was discovered, that move strips feature
is incompatible with replace selection feature being disabled. So the
property is not drawn when move strips feature is enabled.

Pull Request: https://projects.blender.org/blender/blender/pulls/144172
2025-09-03 19:38:33 +02:00
Falk David
3978908c98 Python: VSE: Remove deprecated "sequence" context API
Remove APIs that have been deprecated since Blender 4.4.
See https://developer.blender.org/docs/release_notes/4.4/python_api/#deprecated_1.

Pull Request: https://projects.blender.org/blender/blender/pulls/145597
2025-09-03 19:31:30 +02:00
Nikita Sirgienko
5efeb06613 Fix #145449: Workaround wrongly generated Intel Linux driver version
There are several Driver versions which are constructing the wrong,
semantically, version which would force Blender to decline the Intel
device for oneAPI backend usage, based on this. Unfortunately,
the upstream fix is taking a long time to be finally delivered to
the distros and end-users, so it is better if Blender will detect
this wrong version string and parse it properly, allowing these
devices to be used - as the wrong driver version string is the only
issue here, besides this the driver functionality is fine.

Pull Request: https://projects.blender.org/blender/blender/pulls/145658
2025-09-03 19:26:05 +02:00
Namit Bhutani
8536fd1223 Sculpt: Compress position undo step data
Stored undo step data for position changes in sculpt mode are now
automatically compressed. Compression is run in background threads,
reducing memory consumption during sculpting sessions while adding
little performance overhead.

For testing and benchmarks, memory usage is now available through
`bpy.app.undo_memory_info()`. Undo memory usage is now tracked by the
existing automated benchmark tests. Some changes to the web benchmark
visualization present the data a bit better.

ZSTD compression is run asynchronously in a backround task pool.
Compression is only blocking if the data is requested immediately for
undo/redo.

Co-authored-by: Hans Goudey <hans@blender.org>

Pull Request: https://projects.blender.org/blender/blender/pulls/141310
2025-09-03 19:15:05 +02:00
Hans Goudey
f3c5119d7d Cleanup: Formatting 2025-09-03 12:54:37 -04:00
Richard Antalik
ff2fe55c5d Fix build error in previous commit
Likely caused by incorrect merge when landing PR.
2025-09-03 18:31:29 +02:00
Ramon Klauck
098be390ca VSE: Implement Select Circle
This feature works like the select circle in any other modes. The user
can press "C" in preview or timeline and then select or deselect strips
by pressing the left or middle mouse button.

It’s an enhancement for the VSE preview because:
1. It makes it more similar to other editors in Blender
2. This behavior makes it easier to select specific overlapping strips
in preview, that is because the select circle only checks for the
origin of the strip.

Pull Request: https://projects.blender.org/blender/blender/pulls/141422
2025-09-03 17:57:00 +02:00
Bastien Montagne
ede8e3af91 Docs: Update bpy.props docs/examples for getters and setters.
Mostly addresses recent changes in the area (adding 'transform'
accessors), but also tweak/fix some minor issues with existing doc.

Pull Request: https://projects.blender.org/blender/blender/pulls/145582
2025-09-03 17:25:55 +02:00
Hans Goudey
57f35337e9 Fix #145666: Crash separating all curves
The offsets array is empty when there are no curves, even
though its size is usually one more than the number of curves.

Pull Request: https://projects.blender.org/blender/blender/pulls/145669
2025-09-03 16:57:58 +02:00