Commit Graph

154585 Commits

Author SHA1 Message Date
Jesse Yurkovich
780c6ad024 Tests: Alembic: Add coverage for point cloud attribute import validation
Adds coverage for recently added import of pointcloud attributes.
See PR blender/blender!145946

Pull Request: https://projects.blender.org/blender/blender/pulls/147494
2025-10-07 05:46:34 +02:00
Jesse Yurkovich
fd3f8c1265 Tests: add PointCloud datablock to IO report
Adds support for comparing PointCloud datablocks inside the IO report.

Pull Request: https://projects.blender.org/blender/blender/pulls/147490
2025-10-07 05:13:43 +02:00
Campbell Barton
62d72bd0b5 UV: initial implementation of UV sync select
Support sync selection in the UV editor, with face-corner selection,
so it's possible to select individual UV vertices/edges in the UV editor
without UV's attached to the same underlying edge also becoming selected.

There is limited support for maintaining the UV selection when selecting
from the 3D viewport, common operations such as picking &
box/circle/lasso select support this, however other selection operations
such as "Select Random" or "Select Similar" will clear this data,
causing all UV's connected to selected mesh elements to become selected.
We may add support for additional operators as needed.

Details:

- UV Sync Selection is now enabled by default.
- In edit-mode the UV selection is stored in BMLoop/BMFace which are
  written to custom-data layers when converted to a Mesh.
- To avoid unnecessary overhead - this data is created on demand.
  Operators may clear this data - selecting all or none do so,
  as there is no reason to store this data for a uniform selection.
- The Python API includes functions to synchronize the selection to/from
  UV's as well as flushing based on the mode.
- Python scripts that manipulate the selection will either need to clear
  this synchronized state or maintain it.

See:
- Design task: #78393.
- Implementation task: #131642.

Ref !138197
2025-10-07 01:41:16 +00:00
Sean Kim
88b5319596 Refactor: Split out pressure curve display from main property function
Adds a new `prop_custom_pressure` helper method to `UnifiedPaintPanel`
specifically for drawing brush properties that have custom,
collapsible paint curves and migrates existing usages.

Pull Request: https://projects.blender.org/blender/blender/pulls/147161
2025-10-07 03:10:44 +02:00
Harley Acheson
b11093306b UI: SVG Icons for Collection Colors
A test of using multi-color SVG icons in place of the current "vector"
(custom drawn) style we are using now. These use separate colors for
the box body versus outline, shadow, handhold. Colored by the theme
colors.

Pull Request: https://projects.blender.org/blender/blender/pulls/126307
2025-10-07 02:07:28 +02:00
Campbell Barton
8663f704a2 Cleanup: remove use of f-strings in core scripts 2025-10-07 10:19:46 +11:00
Campbell Barton
cc1a3f19b4 Cleanup: resolve various pylint warnings from recent changes 2025-10-07 10:19:46 +11:00
Campbell Barton
77f5119f77 Cleanup: import modules lazily 2025-10-07 10:19:46 +11:00
Campbell Barton
3de925589f Cleanup: strip trailing space 2025-10-07 10:19:46 +11:00
Campbell Barton
01806a62e3 Cleanup: spelling (make check_spelling_*) 2025-10-07 10:19:46 +11:00
tariqsulley
5cd29bc110 Fix #147288: UV Editing: Copy Mirrored UV Operator
Resolve regression in [0] which would mirror unselected faces.

Only copy UVs between mirror faces that are fully selected,
so unselected faces are left untouched. Vertex mapping also now uses
add_overwrite() to keep the last vertex at duplicate positions for a
more reliable mirroring.

Ref !147405

[0]: 919acbbf7f
2025-10-06 23:02:32 +00:00
Harley Acheson
c03fdf5d9d UI: Toggle Icon Changes
Some of our toggle icons have unclear "off" states, with visibility
looking like a dim curve when off. This PR makes some of these off
states a bit clearer. Visibility and Selectability when off get a slash
through them. Also "unlocked" becomes horizontally aligned with the
"locked"  version.

Pull Request: https://projects.blender.org/blender/blender/pulls/147326
2025-10-06 23:12:37 +02:00
W_Cloud
6399a7c81e Fix: Nodes: Incorrect color for dragged links
Fixes incorrect color for dragged links, likely a regression from #145238.

The fix is to pass `TH_WIRE_INNER` to `nodelink_get_draw_config`. This results
in a color ID of 2 from `nodelink_get_color_id`, which satisfies the
`color_ids[0] < 3u` check in the `gpu_shader_2D_nodelink_vert.glsl`.

Pull Request: https://projects.blender.org/blender/blender/pulls/147462
2025-10-06 21:06:29 +02:00
Nikita Sirgienko
c07454a3d7 Cycles: oneAPI: Update UI about minimal driver version on Linux
These changes are already in place de facto, as the check for
the minimal driver version in the Blender code was already
updated. This commit simply adds the UI update, which I
initially forgot to perform.

Pull Request: https://projects.blender.org/blender/blender/pulls/147459
2025-10-06 20:44:20 +02:00
Harley Acheson
5953ff318c UI: Add Preference for Menu Close on Leave
This PR changes the current behavior that closes menus that are open
when your mouse is moved out of its "safe" area (a bit wider than its
visible bounds). With this PR applied menus stay open unless you click
elsewhere, hover a neighboring menu, press escape, or select an item.
Although this PR turns off menu mouse leave, it also adds a preference
that can be used to turn it back on.

Pull Request: https://projects.blender.org/blender/blender/pulls/145523
2025-10-06 20:19:12 +02:00
Hans Goudey
80e8493c11 Fix #147270: Smooth by angle asset detection broken on Windows
6087a8b4a4 didn't use slashes properly.
Just use a utility function for path comparison instead.

Pull Request: https://projects.blender.org/blender/blender/pulls/147471
2025-10-06 20:00:54 +02:00
W_Cloud
247c19f6cf Fix #147355: Nodes: Inconsistent vector add menu
- Add the missing `Vector Math` node to the Compositor add menu.
- Adjust the position of the `Separate XYZ` node in Geometry Nodes.
- Adjust the position of the `Vector Math` node in Shader Nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/147435
2025-10-06 19:09:01 +02:00
Harley Acheson
ba157ee1a4 Fix #147413: Thinner Playhead Line Shadow with Wide Lines
Selecting "Wide Lines" has always made the playhead vertical line
thicker. But with #145081 the line is an odd width, so when at 1X scale
it is three pixels instead of two with default lines, five pixels
instead four with wide line lines. But that one pixel isn't a big
deal, it is that the SHADOW around the line is now calculated based on
the line width when it used to be based on ui scale. This means at
1X scale and wide lines the shadow is two pixels when it used to
be just one. This PR goes back to the old shadow width calculation
which makes the overall obscuring width 2 pixels narrower at 1x wide.

Pull Request: https://projects.blender.org/blender/blender/pulls/147467
2025-10-06 18:48:27 +02:00
Casey Bianco-Davis
fff2b76645 Fix #142377: Grease Pencil SVG Exporter objects disabled in render
This adds a check to ensure that objects disable in the render
don't show up in exported SVGs.

4.5 Backport candidate.

Pull Request: https://projects.blender.org/blender/blender/pulls/147332
2025-10-06 18:43:23 +02:00
Christoph Neuhauser
72f098248d Cycles: Add Vulkan/oneAPI graphics interop
This PR adds Vulkan/oneAPI graphics interop to Cycles. Just like for
CUDA and HIP interop, persistent memory mapping is used, as there could
potentially be some overhead of continuously mapping/unmapping buffers.

Pull Request: https://projects.blender.org/blender/blender/pulls/144442
2025-10-06 18:16:56 +02:00
Leon Schittek
dea345d287 UI: Nodes: Show custom color on muted nodes
Use the custom color even when nodes are muted, to keep them more
recognizable.
The muted state is still indicated by mixing in the background color
and making the node transparent.

Additionally this makes small tweaks so the header colors of muted
nodes are the same between the collapsed and uncollapsed state.

Pull Request: https://projects.blender.org/blender/blender/pulls/147349
2025-10-06 18:10:22 +02:00
Brady Johnston
7e306b4d7c Geometry Nodes: Improve link-drag-search for grid nodes
Implement search for Set Grid Transfor and Set Grid Background.

Pull Request: https://projects.blender.org/blender/blender/pulls/147385
2025-10-06 17:55:52 +02:00
Brady Johnston
438b8c303e Geometry Nodes: SDF Grid filtering nodes
This PR gives access to OpenVDB's level set filtering operations
through individual **SDF Grid** nodes.

- **Mean Curvature**: Smoothens high curvature areas more than flatter
  ones.
- **Laplacian**: Approximates mean curvature flow for true SDFs at lower
  computational cost.
- **Median**: Reduces noise while preserving sharp features.
- **Mean**: Fast separable averaging filter for general-purpose
  smoothing with linear computational complexity.
- **Offset**: Uniform dilation/erosion operation that shifts the SDF
  surface by a world-space distance.
- **Fillet**: Rounds off concave internal corners by operating only on
  regions with negative principal curvature.

Pull Request: https://projects.blender.org/blender/blender/pulls/147224
2025-10-06 17:54:25 +02:00
Sybren A. Stüvel
d33a6a1723 Python: add function for file iteration/remapping bpy.data.file_path_foreach()
Add a function `bpy.data.file_path_foreach()` with a callback function
`visit_path_fn`:

```py
def visit_path_fn(
    owner_id: bpy.types.ID,
    file_path: str,
    _meta: typing.Any,
) -> str | None:
    return file_path.replace('xxx', 'yyy') or None

bpy.data.file_path_foreach(
    visit_path_fn,
    *,
    subset=None,
    visit_types=None,
    flags={},
)
```

When the function returns `None`, nothing happens. When it returns a
string, the reported file path is replaced with the returned string.

`subset` and `visit_types` have the same meaning as `subset` resp.
`key_types` in `bpy.data.file_path_map()`. Since the latter parameter
doesn't affect keys in a map, but rather the visited ID types, I named
it `visit_types` instead.

`flags` wraps most of `eBPathForeachFlag` as `set[str]`, with their
prefixes removed. `BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN` becomes
`RESOLVE_TOKEN`, etc. `BKE_BPATH_FOREACH_PATH_ABSOLUTE` is excluded,
as it only affects a field in the C++ callback structure that is not
passed to Python at all. If it turns out to be useful at some point,
we can always add it.

`_meta` is for future use, and is intended to give metadata of the
path (like whether it's an input or an output path, a single file or
the first file in a sequence, supports variables, etc.). By adding
this to the API now, we avoid a breaking change when this feature is
actually implemented.

Design task: #145734

Pull Request: https://projects.blender.org/blender/blender/pulls/146261
2025-10-06 17:10:49 +02:00
Sean Stirling
e12ddede24 Cycles: Disable jumptablerdata cxx option for ARM64 devices compiled with MSVC.
This change disables an x64 specific flag for ARM64 devices when compiling with MSVC.

Pull Request: https://projects.blender.org/blender/blender/pulls/147276
2025-10-06 17:10:08 +02:00
Bastien Montagne
2f3b321f29 Fix (unreported): PackedID: Clear deephash when making them local.
Fixed the two most obvious entry points (actually making a linked ID
local, and making a local copy of linked data), there may be more
unusual ways to do that still hidden in the code though.

Also added a couple of 'sanity asserts' to the writefile code regarding
cases where IDs are expected to have a null deep_hash data.
2025-10-06 16:43:24 +02:00
Jacques Lucke
d7611d2c6b Fix: inverted return value 2025-10-06 16:19:18 +02:00
Jacques Lucke
90d10a8408 Fix #147175: packing baked data shows error
This showed an error while it actually worked as expected. The issue was that it
attempted to pack the entires named `.` and `..`, which have special meaning.
Filtering those out quiets the error message.

Pull Request: https://projects.blender.org/blender/blender/pulls/147455
2025-10-06 16:17:33 +02:00
Habib Gahbiche
4c0408bbe6 Compositor: Make asset shelf visible by default
Now that we have assets bundled with Blender, the asset shelf can be
visible by default.

See also: #138983

Pull Request: https://projects.blender.org/blender/blender/pulls/147453
2025-10-06 16:00:00 +02:00
Omar Emara
d9d8f8e777 Fix #147284: Dilate threshold test fails on Qualcomm GPU
The dilate threshold test fails on Qualcomm GPU due to an unknown
reason, but the tests shows significant differences in all platforms
regardless, they are just small enough to pass the test threshold. The
difference is most likely the new SMAA implementation done to match the
GPU version, so updating the reference is reasonable here.

Pull Request: https://projects.blender.org/blender/blender/pulls/147451
2025-10-06 15:26:54 +02:00
Omar Emara
93854e97dc Fix #147274: Compositor modifier strip mask affects other strips
Using a strip mask in a compositor strip modifier causes other strips to
change in color. This is because the code converted the mask image
buffer in place, which affected its other uses. To fix this, convert the
mask out of the place.

Pull Request: https://projects.blender.org/blender/blender/pulls/147446
2025-10-06 15:24:48 +02:00
Omar Emara
488efb8ca9 Fix #147289: Keying Screen node test succeed with bad result
The result of the Keying Screen node tests is very different yet the
test succeeds, that's because the test result has a very small number of
pixels compared to the final image. To fix this, we match the size of
the result with the render size.

This also updated the test reference which should have been updated
after the new RBF interpolation implementation of the node.

Pull Request: https://projects.blender.org/blender/blender/pulls/147449
2025-10-06 15:23:03 +02:00
Jacques Lucke
ea965e0adc Geometry Nodes: show warning in viewer when modifier is disabled
It's a common mistake that people want to use the viewer node while the
modifier is disabled and wondering why it doesn't work. This patch adds a
warning that helps users diagnose the issue immediately.

Pull Request: https://projects.blender.org/blender/blender/pulls/147443
2025-10-06 15:20:51 +02:00
Andy Goralczyk
d4e90beab6 Compositor: New essential node assets for 5.0
Ref: https://projects.blender.org/blender/blender/issues/145573.

Added to Essentials(pre-bundled with Blender):
- Camera & Lens Effects/
   - Vignette
   - Film Grain
   - Sensor Noise
   - Chromatic Aberration
- Creative/
   - Tune Image
   - Sepia
   - Split Toning
   - Unsharp Mask
- Utilities
   - Retime

See PR description for demo videos.

Thanks to @Sergey for the RGB <-> CMYK workflow and
@SimonThommes for the help with the vignette masking!

Co-authored-by: Habib Gahbiche <habib@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/146038
2025-10-06 15:20:22 +02:00
Nika Kutsniashvili
ca7af76bc9 UI: Cosmetic changes to "Global Transform" sidebar panel
Cosmetic changes to "Global Transform" panel in 3D Viewport sidebar, to make it
more aligned with rest of the Blender UI.

Note that this isn't a comprehensive update, there are still many things to change
according to our discussions in #137280. This PR only includes small,
non-controversial changes so that we can land improvements in 5.0.
Bigger changes will follow in the next version(s).

List of changes:
- Close all subpanels by default.
- Move "Fix to Camera" subpanel to the bottom, so that it's not between related
"Mirror" and "Relative" subpanels.
- Follow Blender's GUI guidelines:
	- Use `property_split`.
	- Align related properties.
- Remove redundant label from "Relative" subpanel. The title of the subpanel
already communicates the purpose.
- Rename "Mirror Options" subpanel title to just "Mirror". It's obvious that the
panel will contain options.

Pull Request: https://projects.blender.org/blender/blender/pulls/147436
2025-10-06 14:46:29 +02:00
Falk David
53fdb46498 Fix: Compile error after merge
Introduced by f694ef839d
because it forgot to merge 6b75fe7658.
`seq::for_each_callback` was renamed to `seq::foreach_strip`.
2025-10-06 14:36:25 +02:00
Jeroen Bakker
f2c04f08c4 Cleanup: Fix compilation warnings 2025-10-06 14:31:42 +02:00
Jacques Lucke
522a2a28f7 Fix: Geometry Nodes: confusing tooltip on unlinked grid input sockets 2025-10-06 14:31:11 +02:00
Falk David
f694ef839d Cleanup: VSE: Rename for_each_callback to foreach_strip
The function name `for_each_callback` is ambigous (what are we iterating?)
and also doesn't align with the naming of other "for each" functions in Blender
which usually are named `foreach_<thing>` like `IndexMask::foreach_index`
or `animrig::foreach_fcurve_in_action` etc.

Pull Request: https://projects.blender.org/blender/blender/pulls/147440
2025-10-06 14:02:32 +02:00
Aras Pranckevicius
4e00b37348 Tests: add more VSE render tests
- Compositor modifier
- Modifier that uses Mask ID on a rotated strip

Pull Request: https://projects.blender.org/blender/blender/pulls/147441
2025-10-06 13:44:13 +02:00
Falk David
6b75fe7658 Fix #147106: VSE: Show keyframes of compositor node trees in dopesheet
Any keyframes for properties inside the compositor node
trees that were used by strips did not show up in the dopesheet.
This was because the compositor tree is its own ID and needs to
be manually added by the dopesheet code.

This fix adds the node trees to the filtering code in
`animdata_filter_dopesheet_scene`.

Note that the dopesheet still uses the active scene as its context.
So this means that if the sequencer scene differes from the active
scene, the animation data from the sequencer scene will not
be shown. This is currently expected behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/147301
2025-10-06 12:17:17 +02:00
Pratik Borhade
a7cca80c36 Fix #147412: Opening "Randomize Color" sub-panel makes "Modes" disappear
Mistake in 56d52a7070 (wrong parameter name).

Pull Request: https://projects.blender.org/blender/blender/pulls/147423
2025-10-06 11:53:57 +02:00
Casey Bianco-Davis
559f9b29cd UI: Theme: Update Curves Handle Type colors
This PR Updates the default colors of the Curve Handle types,
to increase readability and contrast.
Each color more different from each other to not be confusing.

Logic for the new colors:
* Purple/Dark blue is used for the `Vector` type to match the header
  and sockets of Vector nodes.
* Red is used for `Auto` to show that they're locked and can't be
  changed without converting the type.
* Pink/Salmon color is used for `Auto-Clamped`  to be similar to `Auto`
   while still being distinct.
* The remaining colors are chosen to be visually distinct from the
  other colors.

This also fixes a problem caused by 1067112c11 (#145360) where
Free handle were left fully black. These black handles are extremely
hard to use with Grease Pencil objects, because Grease Pencil strokes
often are black. Because the `Free` handle selected color is also black,
handles do not show if they are selected.

Co-authored-by: Nika Kutsniashvili <nickberckley@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/147335
2025-10-06 11:42:49 +02:00
Falk David
3e21341188 Cleanup: VSE: Refactor seq_render_scene_strip
* Removes the `goto` statements
* Pulls out the store/restore logic into a higher-level function

Pull Request: https://projects.blender.org/blender/blender/pulls/147279
2025-10-06 11:37:59 +02:00
Jeroen Bakker
662a49f5db Fix #145315, #147064: Vulkan: Various artifacts on Qualcomm devices
Qualcomm driver team found an issue how Blender uses dynamic rendering.
The issue is that between suspend/resume of rendering only a limited
commands are possible. However we add commands that shouldn't be added
there. It is a violation of the Vulkan spec
VUID-VkSubmitInfo-pCommandBuffers-06015

It went unnoticed as it is mere a single line in the 5000+pages spec
and wasn't covered by the validation layers. This has been reported
upstream.

To fix this issue we remove the usage of suspending/resuming render
passes and fix any issue that used this together with clearops. Most
likely the fix will require a second dynamic rendering pass when
clearops are used.

Pull Request: https://projects.blender.org/blender/blender/pulls/147425
2025-10-06 11:34:47 +02:00
Bastien Montagne
f91af6a1be I18N: Update UI translations from git/weblate repository (06ac55f940874). 2025-10-06 11:14:16 +02:00
Philipp Oeser
23fcfa3e4c Fix #147070: Proportional editing even when disabled in object mode
This happened if proportional editing was enabled in editmode, not
having an active object plus being in object mode.

The transform system `convert_type_get` assumes
`TransConvertType_Object` if we dont have an active view layer object.

Corresponding code for proportional editing detection [in
`initTransInfo` & `saveTransform`] wasnt though (it used `toolsettings`
`proportional_edit` -- not `proportional_objects` -- in that case).

This is now corrected.

Probably caused by e91d581167

Pull Request: https://projects.blender.org/blender/blender/pulls/147193
2025-10-06 10:57:49 +02:00
Jacques Lucke
ceca413bcb RNA: add callback to support dynamic property ui name
This adds a new `PropertyRNA::name_func` property which is similar to the many
existing functions like `editable`, `get_default`, etc. It allows dynamically
getting a UI name for the property.

This is especially useful for node sockets, because those all have the same
hardcoded name "Default Value" which is not helpful. Since we already have
custom tooltips for sockets, this is mostly not visible to the user anymore. The
exception being menu sockets which draw the property name as title. Instead of
"Default Value", this patch makes it show the correct title.

Pull Request: https://projects.blender.org/blender/blender/pulls/147137
2025-10-06 10:40:05 +02:00
Philipp Oeser
47a0d9b52f Fix #146529: Crash getting RNA path to scene rigid body pointcache
Spawning the tooltip or changing values would cause this.

Error in 28827b62f7

Above commit only considered PointCaches associated with **objects**,
not taking into account scene rigid body cache.
This is now added with this PR.
Previously it would cast into modifiers when we actually had a scene as
owner... resulting in a crash.

This was only exposed by 6bf8685628 (it crashes since, was just not
working properly before...). 6bf8685628 changed the data layout of
`struct Object` and only by pure luck the modifiers loop was skipped, now
with the new layout it is entered (but with garbage data resulting in the crash.

Pull Request: https://projects.blender.org/blender/blender/pulls/146577
2025-10-06 09:38:39 +02:00
Jesse Yurkovich
6ffd9be9a6 Fix: USD: Prevent unsupported point instancing setups from causing warns
If we detect an unsupported point instancing setup, do not attempt to
still export it out. Depending on the number of instances this can spew
10's of thousands of USD warning traces to the console.

Pull Request: https://projects.blender.org/blender/blender/pulls/147253
2025-10-06 04:42:39 +02:00