Commit Graph

153428 Commits

Author SHA1 Message Date
Hans Goudey
c01d4a4ee6 Refactor: Deduplicate position transform utilities
The pattern of transforming many position vectors at once is quite
common, both with separate source and result arrays, and when modifying
an array in place. In some cases at least we used a separate function
with a consistent name across files, but there were also many duplicate
parallel transform implementations.

This commit adds these utilities to the BLI_math_matrix.hh API and uses
them where many positions from contiguous arrays are transformed at
once. While there might be a more ideal location for these utilities,
it's consistent with 3936d7a93e, and certainly better
than duplicating them.

This also reduces binary size of my build by 15 KB.

Pull Request: https://projects.blender.org/blender/blender/pulls/145352
2025-08-28 19:27:17 +02:00
Hans Goudey
fbaf6d42f0 Grease Pencil: Avoid repeated attribute lookup in origin set operator
Don't look up the position attribute for every single point.
2025-08-28 19:27:16 +02:00
Hans Goudey
d74c033a9d Cleanup: Remove else after return in grease_pencil_io.cc 2025-08-28 19:27:16 +02:00
Nika Kutsniashvili
ea47231a7b UI: Make selected track color in Movie Clip Editor themeable
Selected tracks in the Movie Clip Editor's Dope Sheet used hard-coded color.
Added a new theme property for them, and previously hard-coded color is now just a default.

Pull Request: https://projects.blender.org/blender/blender/pulls/144265
2025-08-28 19:12:11 +02:00
Bastien Montagne
fa61e3b9b8 Clenaup/Fix: Missing handling of ObHook::parent Object pointer.
While handling this pointer is technically not needed in `foreach_id`
code (and likely never will be), better not rely on such undocumented
implicit specifics, and instead properly handle it there, with comments
and asserts explaining why it should not be actually executed in current
code.

Pull Request: https://projects.blender.org/blender/blender/pulls/145345
2025-08-28 18:05:54 +02:00
YimingWu
02737c7b93 LineArt: Allow curves objects to be loaded into calculation
When line art is first developed, curves objects does not exist yet, now
it is added to line art so it will be read and take part in feature line
generation and occlusion tests.

This patch also adds "Line Art" panel for curves object, just like other
objects supported by line art.

Pull Request: https://projects.blender.org/blender/blender/pulls/145296
2025-08-28 17:28:47 +02:00
Harley Acheson
9e0ef26686 Fix #145186: Allow opening non-existing blend from command line
The PR restores the old behavior (after the changes in #139128) so that
specifying a path to a non-existing blend file will load Blender with
default blend default and with that name assigned. Paths to non-blend
files will load blender but then give the new warning message.

Pull Request: https://projects.blender.org/blender/blender/pulls/145274
2025-08-28 16:48:45 +02:00
Jacques Lucke
20956c69fa Fix: Nodes: crash when opening files with closure and bundle nodes saved in 4.5
This adds support for opening "invalid" files containing closure/bundle nodes that have
first been saved with 5.0, then resaved with 4.5. Note that loading them in 4.5 only works
after #145337.

Pull Request: https://projects.blender.org/blender/blender/pulls/145333
2025-08-28 16:31:33 +02:00
Omar Emara
5cabc57af0 Compositor: Optimize nodes with Boolean and Menu inputs
This patch optimizes nodes with Boolean and Menu inputs for GPU
execution. This is done by using constant links instead of uniforms for
those inputs. This will cause shader recompilation, but is okay since
those inputs rarely change.

Pull Request: https://projects.blender.org/blender/blender/pulls/145329
2025-08-28 16:00:58 +02:00
Omar Emara
fdf95b53fa Compositor: Add Convolve node
This patch adds a simple Convolve node to the compositor.

Pull Request: https://projects.blender.org/blender/blender/pulls/144619
2025-08-28 15:58:39 +02:00
Campbell Barton
90a55a3e0b Fix: walk/fly causing RegionView3D::viewquat not to be normalized
Prevent this issue reported by: #125586 from happening in new files.
2025-08-28 23:22:27 +10:00
Campbell Barton
9774ebfe30 Cleanup: remove unnecessary nested block from walk/fly logic 2025-08-28 23:22:27 +10:00
Jeroen Bakker
a97ef00787 Fix #145314: Vulkan: Disable HDR on incapable drivers
This PR disables HDR when driver doesn't support
`VK_EXT_swapchain_colorspace`. It could be that Windows detect support
(DirectX) and allow users to enable HDR. But that it isn't supported by
the Vulkan part of the driver.

In case of Windows there might be an issue with using SRGB non
linear on F16 swapchains where somewhere an additional transform is
being performed. After adding support for other color spaces we should
remove the support of this swapchain configuration.

Pull Request: https://projects.blender.org/blender/blender/pulls/145325
2025-08-28 15:18:38 +02:00
Philipp Oeser
81c259d49b Fix #145300: Value node displayed value has an offset to the right
Caused by d7fa455e66

Due to an earlier experiment to get right alignment, above commit left a
space in the text (this was later solved by using
`UI_ITEM_R_SPLIT_EMPTY_NAME`, but... for this one node, the name was not
actually empty then...)

Pull Request: https://projects.blender.org/blender/blender/pulls/145303
2025-08-28 15:11:21 +02:00
Jacques Lucke
20b2ec5cdf Fix #145103: incorrect socket usage for built-in menu sockets
The socket usage of built-in menu sockets did not take into account if any of the
outputs of the node were actually used.

Pull Request: https://projects.blender.org/blender/blender/pulls/145162
2025-08-28 14:28:14 +02:00
Falk David
fff8834213 Fix #145297: Grease Pencil crash when joining objects
The function was using the `BKE_id_material_len_p` with the ID
of the object rather than the object data ID, which is what the
function expects.

Instead make sure to use `BKE_object_material_len_p` to get
the right number of material slots.

Additionally use the correct slot in `BKE_object_material_get`
which is the index of the material + 1.

Pull Request: https://projects.blender.org/blender/blender/pulls/145323
2025-08-28 14:25:05 +02:00
Jacques Lucke
2e4d2ad5ab Refactor: BLI: reduce code size for virtual arrays
Previously, `VArrayImpl` had a `materialize` and `materialize_to_uninitialized`
function. Now both are merged into one with an additional `bool
dst_is_uninitialized` parameter.  The same is done for the
`materialize_compressed` method as all as `GVArrayImpl`.

While this kind of merging is typically not ideal, it reduces the binary size by
~200kb while being basically free performance wise. The cost of this predictable
boolean check is expected to be negligible even if only very few indices are
materialized. Additionally, in most cases, this parameter does not even have to
be checked, because for trivial types it does not matter if the destination
array is already initialized or not when overwriting it.

It saves this much memory, because there are quite a few implementations being
generated with e.g. `VArray::from_func` and a lot of code was duplicated for
each instantiation.

This changes only the actual `(G)VArrayImpl`, but not the `VArray` and `GVArray`
API which is typically used to work with virtual arrays.

Pull Request: https://projects.blender.org/blender/blender/pulls/145144
2025-08-28 14:24:25 +02:00
Pasang Bomjan
0056784996 Nodes: Node Wrangler: Make Lazy Connect without menu to only consider visible sockets.
When using `Lazy Connect`, the operator currently also considers sockets that are hidden.
This causes unintentional socket connections and requires to use the operator with the
menus for manually picking sockets which is slower and defeats the purpose.

Videos in PR.

This PR fixes that by not considering the hidden sockets.

Pull Request: https://projects.blender.org/blender/blender/pulls/145316
2025-08-28 12:52:31 +02:00
Clément Foucault
998655f4d9 Cleanup: Metal: Remove unused struct
This is no longer necessary since we do not use geometry shader
workarounds.
2025-08-28 12:08:42 +02:00
Clément Foucault
8c7ba3579f GPU: Batch: Remove unused instance attributes
This has been completely replaced by SSBOs overtime.

This reduces API size and avoid untested/legacy path
in drivers that are known to break (see #134509).

Pull Request: https://projects.blender.org/blender/blender/pulls/145242
2025-08-28 12:07:41 +02:00
Julian Eisel
450f428434 Fix #143699: Pose library asset shelf does not apply poses
This was quite involved to get to work. Basic idea is to make
`bl_activate_operator` work for the pose library asset shelf, and
introducing a `bl_drag_operator` for blending poses.

- Make pose asset operators take an asset reference, which is how
  `bl_activate_operator` usually gets the asset to operate on. This way
  poses references can be assigned to a shortcut, identified by asset
  library and relative asset path within the library. Falls back to
  getting the asset from context.
- Trigger `bl_activate_operator` on every click, instead of only when
  an un-active item becomes active. Needed so poses can be re-applied
  as before.
- Fix button context not passed to the `bl_activate_operator` when
  force-activating, e.g. on right-click events.
- Allow registering a `bl_drag_operator` in the asset shelf definition.
  Executed when dragging an asset in the shelf.
- When dragging an asset, highlight it as active, without calling the
  `bl_activate_operator`. This is important feedback to the user.
- Activate/select view items on click instead of drag, so dragging is
  possible.
- Let pose applying operators handle the Ctrl key to apply poses
  flipped. There's no simple way to attach such alternative behaviors
  to `bl_activate_operator`/`bl_drag_operator`
- Remove keymap items that were there for the previous "hacky" solution
  to apply & blend poses.

Pull Request: https://projects.blender.org/blender/blender/pulls/144023
2025-08-28 12:04:31 +02:00
Brecht Van Lommel
5d72498154 Color Management: Improve gamma 2.2 vs piecewise sRGB handling for HDR
See the code comments for detailed explanation. But overall we use particular
combinations of sRGB and gamma 2.2 encode/decode to match SDR applications
while still ensuring HDR values are passed on linearly.

This means the user interface and SDR content will display different in
Windows HDR mode off and on, but that is consistent with other applications.

Split use_hdr variable into use_hdr_buffer about the graphics buffer,
and use_hdr_display about the chosen display in Blender.

Ref #145022

Pull Request: https://projects.blender.org/blender/blender/pulls/145025
2025-08-28 11:35:10 +02:00
Brecht Van Lommel
52f1d0a0e1 Color Management: Optimization for display transforms
Clamp in linear colorspace for some known transfer functions and gamuts,
so that OpenColorIO can cancel out transfer functions. This eliminates for
example PQ encode and decode transforms in the GPU shader.

This does not eliminate all unnecessary operations though. In particular,
many view transforms already explicitly or implicitly clamp to the same
or a smaller gamut, making our clamping unnecessary. But there seems to be
no generic way to detect this.

Ref #144911

Pull Request: https://projects.blender.org/blender/blender/pulls/145025
2025-08-28 11:35:10 +02:00
Brecht Van Lommel
b5ade69400 Color Management: Consider all aliases for interop ID
It looked at the first one to be careful, but seems to work fine with all
of them too and recognizes more spaces that we need.

Ref #144911

Pull Request: https://projects.blender.org/blender/blender/pulls/145025
2025-08-28 11:35:10 +02:00
Brecht Van Lommel
b5769044d4 Refactor: Color Management: Determine gamut and transfer function for views
Ref #144911

Pull Request: https://projects.blender.org/blender/blender/pulls/145025
2025-08-28 11:35:10 +02:00
Sahar A. Kashi
14bd7a531f Cycles: Remove ROCm 5 code path and add ROCm 7 runtime to search list
This pull request removes ROCm 5 code path and adds ROCm 7 runtime to
library search list.

ROCm 5 runtime is no longer shipped with AMD drivers, and ROCm 5 compiler
is no longer compatible with newer driver versions.

It also adds ROCm 7 runtime to the list of runtime libraries to look for.
Starting later this year, ROCm 7 runtime will be bundled with the driver
installer, and all future runtime fixes and improvements will target ROCm 7.

Once ROCm 7 runtime is rolled out, ROCm 6 compiler will continue to work
with it for about a year as a transitional measure. Beyond that, compatibility
is not guaranteed.

Pull Request: https://projects.blender.org/blender/blender/pulls/145279
2025-08-28 11:35:01 +02:00
Sergey Sharybin
1d88e19c32 Fix #145185: Crash while solving camera motion
The crash happens in specific cases when doing euclidean resection
in cases when first 3 3D estimates are correlated. While it is a bit
cryptic on user level, what it could mean is:

  - Either there are overlapping markers
  - Or the optical system is highly out of calibration.

Either of these cases is not the primary goal to support with camera
solvers in Libmv for the time being, so while this change avoids the
crash there is possibility to make algorithm more robustly handle the
tracking data and potentially give better result.

Such correlation via some intermediate steps leads to the algorithm
attempting to perform SVD decomposition of a matrix with NaN values
in it.

The exact reason of the crash is not super clear as it happens deep
in the JacobiSVD decomposition code in Eigen and caused by invalid
index somewhere. It might be a bug in Eigen which doesn't do range
checking, hoping that the math does not fail in cases like NaN and
inf.

Pull Request: https://projects.blender.org/blender/blender/pulls/145301
2025-08-28 11:15:31 +02:00
Brecht Van Lommel
20a19c7aa4 Vulkan: Tweaks to improve HDR display on Windows
* Improve accuracy of warning when HDR display is not supported, taking into
  account HDR mode on/off on Windows.
* When HDR mode is disabled on Windows, don't create a HDR swapchain. This
  saves memory, and avoids a color difference on NVIDIA. That's because NVIDIA
  is the only GPU we've tested that allows a HDR swapchain when HDR mode is
  off, and we don't currently know the expected transforms for that case.
* Recreate swapchain when HDR mode on/off switch is detected.
* Update HDR info when window gains focus.

Note this means there is no wide gamut when Windows HDR is off, but it was
already not working. For that we may need to add support for something like
10bit VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT, or whatever is commonly
available outside of HDR mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/144959
2025-08-28 11:03:24 +02:00
Weizhen Huang
f77881a795 Fix #144918: World volume with zero density not rendering correctly
OneAPI has some problem with `exp(-0 * FLT_MAX)`.

Pull Request: https://projects.blender.org/blender/blender/pulls/144979
2025-08-28 10:41:33 +02:00
Weizhen Huang
3bbce15497 Fix: Cycles: Some volume octree nodes randomly disappearing
The function `recursive_build()` can change the `shared_ptr` by making
it an internal node. If `root_` is modified, it could happen that when
the children are accessing `root_->bbox.min` that memory is already
freed.

Storing `bbox_min` separately seems to fix the issue. No error is seen
after running the tests repeatedly for 2000 times.

Pull Request: https://projects.blender.org/blender/blender/pulls/145239
2025-08-28 10:40:37 +02:00
Campbell Barton
58f0fd6a6b Fix: support loading blend files with text from v1.70 (#2)
Resolve another issue loading text form old files.
The Curve::len_char32 isn't always set, detect this and initialize
it from the string.
2025-08-28 18:20:09 +10:00
Philipp Oeser
cd358096d4 Cleanup: rename pose_edit_bone_duplicate > post_edit_bone_duplicate
This goes together with pre_edit_bone_duplicate(), so the existing name
is misleading.
(this change came with c2371028e0 , probably just a typo there)

Pull Request: https://projects.blender.org/blender/blender/pulls/145226
2025-08-28 10:13:57 +02:00
Jeroen Bakker
31fa6b62f9 Fix: Vulkan: Incorrect framebuffer size
When a file is loaded with a minimized window the VKFramebuffer can
contain incorrect texture/data that result in a crash when maximizing the
window.

Pull Request: https://projects.blender.org/blender/blender/pulls/145171
2025-08-28 09:38:39 +02:00
Jeroen Bakker
56784c2681 Fix: Python: incorrect assert when reading back framebuffers
Detected when looking into #144887

Pull Request: https://projects.blender.org/blender/blender/pulls/145165
2025-08-28 09:19:29 +02:00
Omar Emara
149a47ba57 Compositor: Turn Menu options to inputs
This patch turns node Menu options into menu inputs. This patch only
covers node operations like Filter, Distort, and so on. Pixel nodes like
Color Balance, Matte, and so on will be done in a separate patch.

Pull Request: https://projects.blender.org/blender/blender/pulls/144495
2025-08-28 08:45:23 +02:00
YimingWu
a623efe42a Fix #145287: Don't touch original mesh when converting to grease pencil
Previously `BKE_id_material_clear` is used on the original mesh data for
clearing mesh array when converting mesh objects into grease pencil,
this is not desired because:

1. It damages original mesh data block, if the mesh is shared across
   multiple objects, this can lead to unwanted changes.
2. Converting multiple mesh objects that shares one mesh can crash
   because the now-modified mesh data block is not fully evaluated and
   subsequent conversions aren't able to get a valid mesh.

By removing the `BKE_id_material_clear` call we can make the conversion
work as expected. Since we replace the object data and reset material
count in the object, the material array in the original mesh shouldn't
pose any influence on the result of the conversion.

Pull Request: https://projects.blender.org/blender/blender/pulls/145288
2025-08-28 08:16:49 +02:00
Campbell Barton
3a39f9575e Fix: error displaying 3D text for v1.70 blend files
Regression from [0] which used Curve::type for file reading
which doesn't exist in old files [1] then raised an assertion
when the curve was evaluated.

This error was only found when back-porting to 4.5 since it was
triggered by big-endian tests which have since been removed.

[0]: 8fea423e00
[1]: e17677ce73
2025-08-28 15:12:52 +10:00
Campbell Barton
ee000da266 Fix #144751: NDOF, pan/zoom reversed in orthographic views, in fly mode
Use viewport navigation options in the orthographic view as well.
While the intention was to have the 3D-navigation preference only
impacting 3D views, inconsistencies between 2D/3D views tend to be
confusing for users, so use the same behavior in both.

Also expose the preference in the "3D Mouse" popup for 2D views as
this preference is used there as well.
2025-08-28 02:35:03 +00:00
Guillermo Venegas
ab078f5122 Refactor: UI: use C++ types in interface_align
This simplifies a bit the code, and avoids manual
allocation/deallocation.
Few variables are initialized in place, `ui_but_can_align`
is simplified too.

Not user visible changes expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/145051
2025-08-28 03:21:20 +02:00
Sean Kim
3d82f6d281 Cleanup: Remove outdated reference to bpy_props.cc enum
Duplicate enums were removed in 94444aaadf

Pull Request: https://projects.blender.org/blender/blender/pulls/145280
2025-08-28 03:14:18 +02:00
Sean Kim
e02eb13a59 Fix #144035: Image Editor ignores face selection
Introduced in 24d08e0bae

The above commit introduced a new batch for drawing UVs in the Image
editor that does not consider face selection when drawing the
corresponding UV map. This was done to reuse the IBO used in object
mode.

Unfortunately, this change didn't account for the case of being able to
select faces in the 3D Viewport (i.e. in Edit or Texture Paint mode)
while also viewing the Image Editor in Paint Mode.

To fix this, the following changes have been made:

* Introduce a new case when drawing the `MeshUV` overlay for objects
  being edited.
* Add two new IBO types and a new batch type to clearly differentiate
  between the above cases when extracting mesh data.
* Fixes some incorrect usage of the `sync_selection` concept

Pull Request: https://projects.blender.org/blender/blender/pulls/144105
2025-08-28 03:11:21 +02:00
Campbell Barton
20f9f5f4c6 Cleanup: remove unused VPaint::radial_symm 2025-08-28 09:42:32 +10:00
Campbell Barton
f3cd4a26c6 Cleanup: remove use of Object::track when updating physics dependencies
This is only used for versioning.
2025-08-28 09:27:08 +10:00
il4n
5387b57863 Fix: VSE: Reassign Inputs Overlap
If the inputs being reassigned to were in a different frame position
than the previous ones, the new effect strip position could overlap
with other strips in the way.

The fix shuffles the effect strip's channel, like is done in the other
operators.

Pull Request: https://projects.blender.org/blender/blender/pulls/145267
2025-08-28 00:57:04 +02:00
Harley Acheson
b244be05a6 Fix #141455: Panel Category Tab Jiggling
Fixing a few places where we don't correctly convert floats to integers
with rounding. The most important being the measurement of the label
strings.

Pull Request: https://projects.blender.org/blender/blender/pulls/145277
2025-08-28 00:35:11 +02:00
John Kiril Swenson
16726a5254 Fix: VSE: Remove unused tweak property in userpref
This was overlooked in #140031. This should silence warnings when
opening user preferences.
2025-08-27 17:29:12 -05:00
Sean Kim
3e21f2b803 Paint: Add tablet pressure to status bar
This commit updates the generic paint operator modals to display the
current tablet pressure if a tablet is being used in the status bar
if Blender is started with `--debug-value 887`

Pull Request: https://projects.blender.org/blender/blender/pulls/144946
2025-08-27 23:45:48 +02:00
Miguel Pozo
0cf4d39aa9 GPU: Improve the do_static_compilation_ check coverage (2)
162a24e05d had to be reverted, since it
didn't take into account other types of dynamically generated
`ShaderCreateInfo` (external shaders like OCIO or Python ones).
This just marks `ShaderCreateInfo`s as generated by default and only
sets the ones from gpu_shader_create_info_list as non generated.

Pull Request: https://projects.blender.org/blender/blender/pulls/145128
2025-08-27 20:17:04 +02:00
Miguel Pozo
ddb4aa2595 Fix: Draw: Update overlapping octrees reference image
Changed in #138449.
Missing in 8036f5e19d.

Pull Request: https://projects.blender.org/blender/blender/pulls/145255
2025-08-27 20:12:31 +02:00
Jesse Yurkovich
7111e95527 USD: Import UsdNurbsCurves as Curves instead of old Curve
Refactor and revamp import and export of `UsdGeomNurbsCurves` prim
objects.

Fixes #130056, among other things.

Summary of changes and enhancements:
- Export:
  - Write out `nurb_weight` attribute as the USD `pointWeights` primvar
  - Properly write out cyclic NURBS curves data (* see notes)
- Import:
  - Import using the new `Curves` datablock rather than the old `Curve`
  - Properly read in cyclic NURBS curves data (* see notes)
  - Tries harder to match incoming knot vector to standard `knots_mode`,
    will use Custom otherwise
  - Support import of all custom primvars and data attached to the prim
    (for use with Geometry Nodes etc.) (* see notes)

Tests were added which check a variety of point count, order, knot_mode,
and cyclic combinations (generated through Geometry Nodes). A small
number of hand-crafted curves were used to test the Custom knots_mode
support on import. Additionally, the tests cover the case when there are
multiple curves defined for a single object.

Notes:
- Cyclic NURBS support is reliant on the current, under-spec'd, USD
  documentation. Changes may be required in the future if/when the USD
  spec is clarified: https://github.com/PixarAnimationStudios/OpenUSD/issues/3740
- Some Cyclic x knots_mode combinations are not correct and would
  require more research to determine how to properly address.
- Custom attributes are not imported for Cyclic NURBS curves yet. Those
  will require additional work to function correctly and are also
  reliant on seeing how the USD spec changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/143970
2025-08-27 19:34:46 +02:00