Commit Graph

117289 Commits

Author SHA1 Message Date
Bastien Montagne
c3247aa4f0 Refactor: Move BPY generic headers to proper C++ ones.
NOTE: `bgl.h` was left unchanged, as it is deprecated code anyway, and
its conversion to C++ does not seem immediately trivial.
2024-09-25 18:04:27 +02:00
Bastien Montagne
4fac7828e4 Refactor: Move BPY mathutils headers to proper C++ ones.
This module actually was confusing, since only a few headers were
effectively still C ones (using the `extern "C"` blocks)...
2024-09-25 18:04:27 +02:00
Bastien Montagne
4dd11465bc Refactor: Move BPY intern remaining headers to proper C++ ones. 2024-09-25 18:04:27 +02:00
Bastien Montagne
198a1ec7a9 Refactor: Move BPY intern bpy_app headers to proper C++ ones. 2024-09-25 18:04:27 +02:00
Bastien Montagne
91e4bcd204 Refactor: Move BPY intern bpy_rna headers to proper C++ ones. 2024-09-25 18:04:27 +02:00
Pratik Borhade
120d2b867b Fix #127365: Bisect operator modal keys missing in status bar
`workspace->runtime->status` is not empty, which gave perference to
existing text instead of the modal operator keys in `uiTemplateInputStatus()`.
To fix this for bisect operator, clear `status` vector in modal
function.

Pull Request: https://projects.blender.org/blender/blender/pulls/127449
2024-09-25 17:59:23 +02:00
Aleš Jelovčan
9ee00e3711 Fix #128119: GPv3: Modifier UI cleanups
The following changes were made:
* Update the icons of the "Smooth" and "Line Art" modifier to use the same icons as before
* Update the "Array", "Mirror", and "Subdivide" modifiers to not use "strokes" in the name.

Pull Request: https://projects.blender.org/blender/blender/pulls/128122
2024-09-25 16:47:58 +02:00
Jason Fielder
57f7d6380c Fix #126542 Fix UV Edge overlays in Metal
Takes into account any offset that must be added to the vertex index
(usually supplied as baseVertex or startVertex in the Metal draw call)
in the code that emulates the SSBO vertex fetch.

Authored by Apple: James McCarthy

Pull Request: https://projects.blender.org/blender/blender/pulls/127864
2024-09-25 15:22:30 +02:00
Laurynas Duburas
84dedfaf4b Curves: smooth handles
Adds antialiasing to curve's handles and thickness to active ones.
Also handles now react to
 `Preferences > Interface > Display > Resolution Scale` and
`Preferences > Themes > 3D Viewport > Edge Width` as they do in
legacy curves.

Pull Request: https://projects.blender.org/blender/blender/pulls/122910
2024-09-25 15:21:31 +02:00
Lukas Tönne
12ef319a49 Support Menu sockets in the for-each-element zone
Adds support for the "Menu" socket type in for-each-element zones. This
only includes field inputs and their matching per-element values, but
not outputting attributes of type Menu (Menu attributes are not
generally supported at this point).

A dedicated enum propagation function is added for the zone input node.
This isn't technically necessary: the first 2 inputs and outputs should
be ignored but are not menus anyway. However, this is clearer and
provides a place for future changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/128106
2024-09-25 15:13:16 +02:00
Hans Goudey
f4de8c1a67 Fix: Incorrect viewport transform node tooltip
The View matrix isn't really the direction and location of the viewport,
it's the opposite, since it transforms object space into camera space.
Change both tooltips to state the change of transform space instead
of using nouns to try to describe what they "are".

Pull Request: https://projects.blender.org/blender/blender/pulls/124741
2024-09-25 15:10:39 +02:00
Philipp Oeser
e71c844354 Fix #127944: Normal rotates in wrong direction
Not verified by actually building, but pretty sure this was caused by
8bff3ec76b.

Since above commit, the Z axis of the View orientation was not negated
by default anymore.
This was then being accounted for in `applyRotation` (but not
`applyNormalRotation`).

So to resolve, do the same in `applyNormalRotation` as in
`applyRotation` (so negate there).

Pull Request: https://projects.blender.org/blender/blender/pulls/128115
2024-09-25 13:22:06 +02:00
Lukas Tönne
2459247f9f GPv3: Enable selection operators and overlays in vertex paint mode
Vertex paint mode also supports masking based on selection, so the
selection overlay and relevant operators should also be enabled in that
mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/128114
2024-09-25 12:40:46 +02:00
Campbell Barton
01825a85cb Cleanup: quiet compiler warnings 2024-09-25 20:14:06 +10:00
Campbell Barton
8dcd51ddc3 Fix crash in recent fix for #128104 2024-09-25 19:37:20 +10:00
Lukas Tönne
6c5b5a7683 Cleanup: formatting. 2024-09-25 11:32:12 +02:00
Campbell Barton
0e08e8bf2d Cleanup: add missing CMake headers, update "check_cmake" config 2024-09-25 19:24:21 +10:00
Campbell Barton
840c65f442 Cleanup: spelling in comments 2024-09-25 19:24:20 +10:00
Campbell Barton
c3b11fbfae Cleanup: correct outdated code comment 2024-09-25 19:24:18 +10:00
Lukas Tönne
59ac6074b7 Fix #128104: Selection operator poll function broken
The poll function was accidentally changed to return false when no
object is selected or the active object is not one of the special types
checked by the function. Reverted to return true in those cases.

Pull Request: https://projects.blender.org/blender/blender/pulls/128110
2024-09-25 10:58:51 +02:00
Sybren A. Stüvel
407e18ed47 Anim: upgrade action group handling code to new API
Upgrade the handling of action groups in various areas to the new Layered
Actions API.

No functional changes for legacy Actions.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128088
2024-09-25 09:36:18 +02:00
Sybren A. Stüvel
02ebab57da Anim: add layered Action support to BKE_animdata_transfer_by_basepath
Add explicit handling of slots to `BKE_animdata_transfer_by_basepath()`,
and modernise the code to use the new API.

No functional changes for legacy Actions.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128088
2024-09-25 09:35:33 +02:00
Sybren A. Stüvel
4159f60e46 Anim: Layered Action support in group handling in action_mirror.cc
Use the `animrig::legacy::channel_groups_all()` function to get action
groups in a way that's compatible with both legacy and layered Actions.

No functional changes for legacy Actions.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128088
2024-09-25 09:35:30 +02:00
Sybren A. Stüvel
11f750bc7f Anim: update BKE_action Action Group functions
In `BKE_action.hh`, update the Action Group related functions, so that
either they are legacy-only or can handle layered Actions as well.

Legacy-only functions not only are documented as such, but also assert
that the given Action is a legacy one.

No functional changes for legacy Actions.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128088
2024-09-25 09:35:27 +02:00
Sybren A. Stüvel
5524a06038 Anim: support layered Actions in BKE get/set active actiongroup functions
Add slotted/layered Action support to `get_active_actiongroup()` and
`set_active_action_group()`.

Note that there is still a bunch of code around that directly manipulates
the action group flags, instead of using these functions. That's for
another commit to address.

This commit also introduces the functions `action_treat_as_legacy()` and
`channel_groups_all(action)` utility functions in the `animrig::legacy`
namespace.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128084
2024-09-25 09:33:04 +02:00
Jacques Lucke
b8b497dcac Geometry Nodes: add Iteration socket to repeat zone
For most cases where the iteration index is needed, a For Each zone is the
better than using a Repeat zone. It's easier to use and more optimizable.
However, in some cases a Repeat zone is actually the right solution and the
index often useful in such cases too.

Pull Request: https://projects.blender.org/blender/blender/pulls/127521
2024-09-24 23:35:35 +02:00
Harley Acheson
8450aa275f UI: Area Docking as Regular Feature, Not Experimental
This PR makes "Interactive Editor Docking" a regular feature, available
by default, and removes the option from Experimental Preferences.

Pull Request: https://projects.blender.org/blender/blender/pulls/127810
2024-09-24 23:23:48 +02:00
Jesse Yurkovich
9e11e95817 Cleanup: remove unused CacheReader_incref APIs
These were unused since 89826e0a0d.

Pull Request: https://projects.blender.org/blender/blender/pulls/128091
2024-09-24 22:40:06 +02:00
Hans Goudey
96c8ede062 Refactor: Sculpt: Deduplicate symmetry vertex search
Currently code to find symmetrical vertices is duplicated
a couple times-- in the expand operator and in the flood
fill API. This commit removes the symmetry processing from
the flood fill API, which arguably shouldn't need to know
about symmetry options in the first place.

Pull Request: https://projects.blender.org/blender/blender/pulls/127804
2024-09-24 22:26:22 +02:00
Jesse Yurkovich
e045471259 Cleanup: remove unused functions from usd_blend_shape_utils
These have been unused since the initial commit.

Pull Request: https://projects.blender.org/blender/blender/pulls/128049
2024-09-24 19:07:03 +02:00
Jesse Yurkovich
2cdbe7b5f3 Fix: USD: Support color attributes on all relevant domains
Color primvars/attributes were historically treated as a special case
for both import and export. This was mostly done to align with how
painting and viewport display works in Blender. Export would generally
ignore color attributes except when they were found on a Mesh's Point or
FaceCorner domains. And import went out of its way to map incoming color
primvars to the FaceCorner domain in more situations than necessary.

To facilitate better roundtripping in Blender<=>USD workflows, and to
reduce code duplication, this PR teaches the common attribute utilities
how to handle color types. The color attributes will now work on all
relevant Mesh and Curve domains.

There were tests in place for this already but they were set to verify
the inverse state, i.e. the technically broken state, until this could
be fixed.

There remains one special case: "displayColor" primvars and attributes.
The "displayColor" is a special primvar in USD and is the de-facto way
to set a simple viewport color in that ecosystem. It must also be a
color3f type. In order to not regress import, if a "displayColor"
primvar is found on the Face domain we will map it to FaceCorner instead
so it can be displayed in the viewport; which has been the case for the
past several releases. We can drop this special-case if/when Blender can
display Face colors through the Viewport Shading "Attribute" color type.
Additionally, Blender will export this, and only this, color attribute
as a color3f.

Note: As was the case prior to this PR, the following 2 discrepancies
still prevent "perfect" round-trips:
- USD does not have an equivalent to Blender's byte colors; they are
  treated as float during IO
- Blender does not have an equivalent to USD's color3 types; they are
  treated as color4 during IO

Pull Request: https://projects.blender.org/blender/blender/pulls/127784
2024-09-24 19:05:55 +02:00
Jacques Lucke
a6d5652043 Geometry Nodes: use placeholder instead of label in some string sockets
This makes the input field much wider. I enabled this for most string sockets
except for a few where it is important to see the label even if the user has
inserted a string already (usually because there is more than one string input).

Pull Request: https://projects.blender.org/blender/blender/pulls/127992
2024-09-24 18:22:32 +02:00
Iliya Katueshenock
8027720e51 Refactor: Nodes: handle unavailable sockets in declaration instead of update function
This refactor changes many nodes to set socket availability in the node
declaration instead of using the more generic `bNodeType::updatefunc`.

This fixes issues where sockets that should be unavailable in evaluated data are
actually available. Also it moves us closer to a state where the generic update
function is not necessary anymore. The update function being so generic makes it
hard to integrate it well into the high level tree update code, because
"anything could happen" in that callback.

Pull Request: https://projects.blender.org/blender/blender/pulls/127845
2024-09-24 18:05:19 +02:00
Sean Kim
591f4c0e59 Sculpt: Add Mask from Boundary Operator
This commit adds the Mask from Boundary operator, which creates or
otherwise modifies a mask based on the the mesh boundary or the face
set boundaries of the mesh.

Conceptually, it behaves similarly to the corresponding automasking
options and the existing Mask from Cavity operator. When applying this
setting, it either uses the global scene value, the brush specific
value, or the operator-defined values. As such, it is exposed in the
existing automasking menus and inside the main Mask menu in Sculpt mode.

Based on this [1] RCS request.

[1] https://blender.community/c/rightclickselect/DYKy/

Pull Request: https://projects.blender.org/blender/blender/pulls/127787
2024-09-24 18:02:30 +02:00
Lukas Tönne
95940e98e1 Fix #128071: GPv3 Fill tool has to compute texture space for new curves
This computes a texture space matrix for newly created strokes.

Pull Request: https://projects.blender.org/blender/blender/pulls/128077
2024-09-24 18:01:21 +02:00
Nathan Vegdahl
629b3ccd42 Anim: update collada export code for slotted actions
The collada export code was directly using `action->curves` in its
export code, which doesn't work with slotted actions. This commit
updates that code to use wrapper functions that provide access to the
correct fcurves regardless of whether the action is slotted or not.

Note that the import code has not yet been updated, and is left for
a future PR.

Ref: #123424
Pull Request: https://projects.blender.org/blender/blender/pulls/128061
2024-09-24 17:47:57 +02:00
Jacques Lucke
af0d417450 Geometry Nodes: hide checkbox in skip socket in simulation zone
It is too easy to accidentally enable skipping the simulation while moving the
node around without noticing. Now it is necessary to pass in a boolean value
from another node to modify the skip value. Existing files that had this
checkbox checked are updated by versioning code.

This implements #127506.

Pull Request: https://projects.blender.org/blender/blender/pulls/127988
2024-09-24 17:45:10 +02:00
Sybren A. Stüvel
3b87859204 Anim: Convert Grease Pencil conversion code to new Action API
Convert the Grease Pencil legacy converter code to the new layered
Action API.

Unfortunately this cannot just work on legacy Actions (and then rely on
the versioning to layered Actions we'll land soon), as the GP conversion
runs as the final step of the versioning process. This cannot be helped,
as the usual versioning is not allowed to create new IDs and this does.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128064
2024-09-24 17:28:35 +02:00
Falk David
dddcc3f378 GPv3: Parent to armature with automatic weights
This ports the armature parenting with automatic weights from GPv2.

Pull Request: https://projects.blender.org/blender/blender/pulls/128073
2024-09-24 17:12:46 +02:00
Lukas Tönne
23cd299ba7 GPv3: Selection support in Sculpt mode
Supporting selection operators and overlays in sculpt mode is necessary
to support masking operations.
This enables selection drawing in the overlay in sculpt mode,
and ensures all the necessary operators (pick, lasso, circle, box)
handle the differences in modes correctly.

The selection code so far was expecting object mode, so the `vc->obedit`
object was used without further checks. Now the selection code can be
called outside of edit mode, in which case the `vc->obact` object must
be used instead. Similarly edit mode and sculpt mode have separate
`selectmode` flags, so the correct mode property must be used from the
tool settings depending on the object mode. These changes require some
refactoring of unrelated selection code.

Pull Request: https://projects.blender.org/blender/blender/pulls/128040
2024-09-24 16:27:06 +02:00
Brecht Van Lommel
b74dfa8cfc Build: Changes for make deps to work on Linux arm64 again
This is not an officially supported platform, but it was working before
so might as well keep it up to date.

* Tweak logic for various BLENDER_PLATFORM_ARM checks
* Use linux_arm64 name for folders, matching Windows and macOS
* CUDA is enabled, SYCL and HIP are not
* Tested to work on Rocky Linux 8
2024-09-24 15:54:47 +02:00
Sybren A. Stüvel
0c9ef75df8 Fix #127976: Actions created via Python can't be used in action constraints
The Action Constraint would only allow actions that were once assigned
to objects, i.e. with `action->idroot == ID_OB`. This did not take into
account the equally valid `0` case, which is what indicates that this
Action has never been assigned to anything yet.

Pull Request: https://projects.blender.org/blender/blender/pulls/128072
2024-09-24 15:36:24 +02:00
Julian Eisel
892ba12bc9 Fix #128027: Last used brush not remembered correctly
Order of operations was wrong: First, the new tool has to be activated
(or at least identified) before we can tell which tool (or more precise,
which brush type) to update the brush binding for.
2024-09-24 15:31:10 +02:00
casey bianco-davis
a0021ed862 GPv3: Move layer operator.
Add `move layer` operator and move UI to match the legacy Grease Pencil's UI.
This will also move groups when selected.

Pull Request: https://projects.blender.org/blender/blender/pulls/127999
2024-09-24 14:59:11 +02:00
Sybren A. Stüvel
5a79c8f31d Refactor: modern API for getting FCurves in Legacy Grease Pencil anim code
No functional changes.

Ref: #123424

Pull Request: https://projects.blender.org/blender/blender/pulls/128069
2024-09-24 14:50:08 +02:00
Sahar A. Kashi
26ed4d3892 Cycles: Linux Support for HIP-RT
This change switches Cycles to an opensource HIP-RT library which
implements hardware ray-tracing. This library is now used on
both Windows and Linux. While there should be no noticeable changes
on Windows, on Linux this adds support for hardware ray-tracing on
AMD GPUs.

The majority of the change is typical platform code to add new
library to the dependency builder, and a change in the way how
ahead-of-time (AoT) kernels are compiled. There are changes in
Cycles itself, but they are rather straightforward: some APIs
changed in the opensource version of the library.

There are a couple of extra files which are needed for this to
work: hiprt02003_6.1_amd.hipfb and oro_compiled_kernels.hipfb.
There are some assumptions in the HIP-RT library about how they
are available. Currently they follow the same rule as AoT
kernels for oneAPI:
- On Windows they are next to blender.exe
- On Linux they are in the lib/ folder

Performance comparison on Ubuntu 22.04.5:
```
GPU: AMD Radeon PRO W7800
Driver: amdgpu-install_6.1.60103-1_all.deb
                       main         hip-rt
attic                  0.1414s      0.0932s
barbershop_interior    0.1563s      0.1258s
bistro                 0.2134s      0.1597s
bmw27                  0.0119s      0.0099s
classroom              0.1006s      0.0803s
fishy_cat              0.0248s      0.0178s
junkshop               0.0916s      0.0713s
koro                   0.0589s      0.0720s
monster                0.0435s      0.0385s
pabellon               0.0543s      0.0391s
sponza                 0.0223s      0.0180s
spring                 0.1026s      1.5145s
victor                 0.1901s      0.1239s
wdas_cloud             0.1153s      0.1125s
```

Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Co-authored-by: Ray Molenkamp <github@lazydodo.com>
Co-authored-by: Sergey Sharybin <sergey@blender.org>

Pull Request: https://projects.blender.org/blender/blender/pulls/121050
2024-09-24 14:35:24 +02:00
Sybren A. Stüvel
dfa25d3f05 Fix: Anim, avoid nullptr deref when deleting the last key of an Action
Deleting the last key on an F-Curve also deletes that F-Curve, and if
that happened to be the last F-Curve of the Action, the entire Action is
deleted (only for legacy Actions).

Tagging the depsgraph is now only done when the Action itself survives.

Pull Request: https://projects.blender.org/blender/blender/pulls/128067
2024-09-24 13:57:50 +02:00
Sybren A. Stüvel
022f4641b8 Refactor: Anim: action_foreach_fcurveforeach_fcurve_in_action_slot
Rename `action_foreach_fcurve` to `foreach_fcurve_in_action_slot`. This
matches the functionality better, and opens up the floor for an iterator
that actually does loop over all F-Curves in an Action.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/128065
2024-09-24 13:44:27 +02:00
Pratik Borhade
c08a71d5a2 Fix #128056: Crash when ctrl click on Outliner collection toggles
Caused by e494a44024
Missing null check.

Pull Request: https://projects.blender.org/blender/blender/pulls/128058
2024-09-24 13:34:18 +02:00
Aras Pranckevicius
64feb05089 VSE: Multi-threaded video proxy downscaling
When building proxies at lower than 100% resolution, the video frame
downscaling step was single threaded, as found via #127956.

Make it use the same threaded sws_scale machinery that the usual video
decoding/encoding uses. Video encoding/decoding was only using it for
RGB<->YUV conversions, so source and destination sizes were always matching;
here it needs to have different source and destination sizes though.

Time taken to rebuild 50% proxy for a 4K resolution 1440 frames (1 minute)
long video file, on Ryzen 5950X (Win10/VS2022):

- Blender 4.2: 20.1 sec, CPU usage 30-40%.
- Blender 4.3 main: 13.1 sec (ffmpeg build has been fixed to use SIMD),
  CPU usage still 30-40% though.
- This PR: 8.3 sec, CPU usage ~95%.

Pull Request: https://projects.blender.org/blender/blender/pulls/128054
2024-09-24 12:47:41 +02:00