Commit Graph

135811 Commits

Author SHA1 Message Date
Hans Goudey
6f5f70994e Cleanup: Unnecessary const in declaration, format 2024-05-02 12:43:07 -04:00
Julian Eisel
8e948a498d Tests: Add unit tests for AssetWeakReference test equality
4dbdd925d444de45a4c23491127921033dec0b12
2024-05-02 12:21:48 -04:00
Nika Kutsniashvili
a3627fe88e UI: Tweaks to Object > Modifier menu
- Moved Modifier menu above Constraints, so that order matches Properties panel
- Added icons for Modifier and Constraints menu (same ones as Properties)
- Renamed "Add" to "Add Modifier", so that it's easier to search for it with F3
- Renamed "Copy Modifiers" operator to match similar operator in constraints menu
- "Add Modifier" operator now doesn't appear if active object type doesn't support
  modifiers. I completely removed it because otherwise it was showing menu with
  empty items even on greyed out

Lastly, I added check for legacy GPENCIL object type, because it doesn't support
new modifier menus, and instead when active object is grease pencil instead of
menu it shows old Add Modifier operator, same one that is in properties panel.

After legacy grease pencil is removed that check won't be necessary anymore and
can be removed, but for now it's needed, otherwise it shows empty menu for grease pencil.

Pull Request: https://projects.blender.org/blender/blender/pulls/121344
2024-05-02 18:13:41 +02:00
Bastien Montagne
ec350a6115 BKE ID copy: Pass new owner ID when possible.
Advanced ID copying code can now take a `new_owner_id` ID pointer parameter,
and use it to set the relevant 'loopback' pointer to its owner ID by the
copy code itself.

Besides avoiding the need for all code copying embedded IDs to set the
loopback pointer themselves, this also means that `lib_id` copying code
itself does not need to use `IDWALK_IGNORE_MISSING_OWNER_ID` anymore.

This change is not expected to have any effect in current codebase.
2024-05-02 17:17:04 +02:00
Bastien Montagne
36c3504994 BKE lib_query: Improve handling of owner ID info for embedded ID.
In previous code, the owner ID info would not be available when
processing an embedded ID in two cases, and was incorrectly set to the
processed (embedded) ID instead:
1. When directly calling `BKE_library_foreach_ID_link` on an embedded ID.
2. When using recursive processing (`IDWALK_RECURSE`).

This commit mostly fixes both cases, by using `BKE_id_owner_get` to find
the owner ID when it is unknown.

There are some caveats here though: in a few specific cases (mainly ID
copying, and depsgraph ID copying), `BKE_library_foreach_ID_link` can be
called on embedded IDs which owner ID is not yet valid. In such case, a
new flag can be used to keep using the previous behavior
(`IDWALK_IGNORE_MISSING_OWNER_ID`).

Fixing the issue with copy code being unaware of the owner ID when
copying an embedded one should also be fixed, but this will be addressed
separately.

Note that as 'side efect', this commit also fixes a matching issue in
the `lib_remap` code, where the `IDRemap.id-owner` pointer would also
wrongly be set to the remapped embedded ID instead of its actual owner.

This change is not expected to have any effect in current codebase.
2024-05-02 17:17:03 +02:00
Bastien Montagne
eb9bec54ad IDType owner ID accessor: Add option to skip relationship sanity checks.
While currently, all cases where `BKE_id_owner_get` is called are
'safe', there are some points in code where the pointers ensureing the
relationship between an embedded ID and its owner are not (fully) valid.

This new option (`false` by default) allows to skip the debug asserts
ensuring the sanity of these 'owner <-> embedded' ID pointers in the
relevant `owner_pointer_get` callbacks.

This change is not expected to have any effect in current codebase.
2024-05-02 17:17:03 +02:00
Bastien Montagne
8ba6c16242 BKE: ID copy: do not expand linked data usages when copying an embedded ID.
There is no reason to do this for embedded IDs - this process is
expected to happen as part of the copying of their owner ID anyway.

Further more, embedded IDs are not in a fully valid state during the
copying of their owner, better avoid as much processing on them as
possible.

This change is not expected to have any effect in current codebase.
2024-05-02 17:17:03 +02:00
Bastien Montagne
27f404c1b4 Cleanup/fix BKE scene copy code remapping its nodetree pointers before setting its owner ID.
While not an issue in current code, this was logically not ideal.
The owner ID is an important information that should be valid as soon as
possible after the copy, before any other process happens.

Ideally this could even become part of the ID copying code itself.

This change is not expected to have any effect in current codebase.
2024-05-02 17:17:03 +02:00
Falk David
5f8fbe62bf Fix: GPv3: Allow compiler use of copy elision
The `std::move` was not necessary and preventing
copy elision on clang.
2024-05-02 17:01:47 +02:00
Sebastian Parborg
221951657b VSE: Make cache overlay visible to non "Developer extras" users
This also moves the option to be a per editor space setting so you can
have different cache visualization options in different editor spaces
at the same time.

A quick toggle for the cache visualization is now available in the
overlays popover.

Pull Request: https://projects.blender.org/blender/blender/pulls/119428
2024-05-02 16:36:11 +02:00
Falk David
370712fc1b Fix #121354: GPv3: object mode selection outline too big
This was caused by c2504eb7794d360dbd487a511fc81f1048e2c59f.
The commit changed the factor for the radii, but didn't update the
overlay code for the outlines.

This fix makes sure we're using the right conversion factor.
2024-05-02 16:32:06 +02:00
Julian Eisel
d4fc167db1 Asset Shelf: Add region poll mechanism for initialization
Allows running some action when the context changes to make the
asset shelf region visible. Also add an option for when whether the
shelf should be visible by default when the poll succeeds.

Pull Request: https://projects.blender.org/blender/blender/pulls/121315
2024-05-02 10:27:55 -04:00
Julian Eisel
471378c666 Assets: Sort assets by catalog
Sort assets in asset shelf and asset browser by catalogs (and within
catalogs by name like before). This groups similar assets better,
reducing visual noise and making specific assets easier to find.

Pull Request: https://projects.blender.org/blender/blender/pulls/121316
2024-05-02 10:26:02 -04:00
Sergey Sharybin
1b0012d51c Refactor: Require C++ for users of BLI_simd.h
This is because sse2neon.h might be used to emulate SSE intrinsics
on ARM64 architecture, and it uses some preprocessor which is not
available for C language when using MSVC.

The old-style math file math_matrix.c uses this header, so needed
to become C++. Simple rename did not work since there is a new math
utility math_matrix.cc exists. Following some existing convention
the math_matrix.c is renamed to math_matrix_c.cc. Eventually all the
code should switch to use C++ style math, and the C style removed,
so it seems reasonable to not mix old and new style of API in the
same file.

There should be no functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/121335
2024-05-02 16:22:19 +02:00
Hans Goudey
a214d00f28 UI: Check for object modifier support in operator poll functions
Check whether the object supports modifiers in the clear and
copy to selected operators.
2024-05-02 10:12:46 -04:00
Falk David
cd93b6c925 Cleanup: GPv3: Compiler warning
Makes the function static and removes an unnecessary comment.
2024-05-02 14:56:55 +02:00
Hans Goudey
9209255f43 Cleanup: Make format 2024-05-02 08:52:07 -04:00
Campbell Barton
1b788f3a84 Fix #120778: Depth navigation no longer works for non-geometry objects
Regression in [0] that changed behavior of depth drawing to exclude
overlays which are needed so users can box-zoom to an armature or camera
for example. Add `V3D_DEPTH_NO_OVERLAY` when no overlays are desired.

[0]: 5fea1eda36179943deb06ab7d1c1896d80a28f4c
2024-05-02 22:36:05 +10:00
Campbell Barton
f15646df59 Fix failure to draw onto a surface with GPv3
GP_PROJECT_DEPTH_VIEW never used a surface depth and would
always use object-origin instead.
2024-05-02 22:34:43 +10:00
Lukas Stockner
17f2cdd104 Cycles: Add thin film iridescence to Principled BSDF
This is an implementation of thin film iridescence in the Principled BSDF based on "A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescence".

There are still several open topics that are left for future work:
- Currently, the thin film only affects dielectric Fresnel, not metallic. Properly specifying thin films on metals requires a proper conductive Fresnel term with complex IOR inputs, any attempt of trying to hack it into the F82 model we currently use for the Principled BSDF is fundamentally flawed. In the future, we'll add a node for proper conductive Fresnel, including thin films.
- The F0/F90 control is not very elegantly implemented right now. It fundamentally works, but enabling thin film while using a Specular Tint causes a jump in appearance since the models integrate it differently. Then again, thin film interference is a physical effect, so of course a non-physical tweak doesn't play nicely with it.
- The white point handling is currently quite crude. In short: The code computes XYZ values of the reflectance spectrum, but we'd need the XYZ values of the product of the reflectance spectrum and the neutral illuminant of the working color space. Currently, this is addressed by just dividing by the XYZ values of the illuminant, but it would be better to do a proper chromatic adaptation transform or to use the proper reference curves for the working space instead of the XYZ curves from the paper.

Pull Request: https://projects.blender.org/blender/blender/pulls/118477
2024-05-02 14:28:44 +02:00
YimingWu
e8d028b7a5 Fix #121338: Depthdropper ensure viewport camera
Depthdropper should ensure that the viewport is in camera view to use
active camera position, otherwise it should still use rv3d->viewinv[3]
to ensure correct distance result.

Pull Request: https://projects.blender.org/blender/blender/pulls/121339
2024-05-02 13:24:22 +02:00
Amelie Fondevilla
725408e842 GPv3: Extrude operator
Implementation of the extrude operator for Grease Pencil v3.
If an endpoint is selected, the extrusion will extend the stroke.
If an inner point is selected, the extrusion will create a new stroke tied to the one that is selected.

Change of behavior from gpv2: the endpoints of a cyclic curve follow the same behavior as inner points.

Pull Request: https://projects.blender.org/blender/blender/pulls/121249
2024-05-02 12:51:30 +02:00
Christoph Lendenfeld
5b7a0ed1b5 Refactor: move keyingset enums to animrig
No functional changes expected.

This PR moves the enums
`eModifyKey_Modes` and `eModifyKey_Returns` to animrig
as enum classes.

Functions that take or return that value were also modified.

Pull Request: https://projects.blender.org/blender/blender/pulls/121132
2024-05-02 12:00:37 +02:00
Jacques Lucke
2b85314f05 Revert "GHOST/Wayland: improve the error message for protocol errors"
This reverts commit a63e44a61f21832eceead24d770e2632ac2b4884.

This lead to build failures on linux because `wl_display_get_protocol_error`
is not defined. The error happened on the buildbot too.
2024-05-02 10:23:42 +02:00
Philipp Oeser
7629ef218e Fix #121134: Hide Proportional Editing for armature editmode
When transforming, both `TransConvertType_EditArmature` /
`TransConvertType_Pose` get disabled from proportional editing
(`TransInfo` gets flagged `CTX_NO_PET` in `init_proportional_edit`).
This is intentional.

UI checks the mode and showing proportional editing properties was
already skipped for 'POSE' mode, but armatures in 'EDIT' mode would
still show them.

To resolve, also skip the UI for `EDIT_ARMATURE` mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/121205
2024-05-02 09:23:10 +02:00
Campbell Barton
530999fb76 Cleanup: add missing SPDX-FileCopyrightText 2024-05-02 16:46:26 +10:00
Campbell Barton
f6b7464b4c Cleanup: spelling in comments 2024-05-02 16:44:10 +10:00
Campbell Barton
41c43c9e87 Cleanup: use const pointers 2024-05-02 16:11:03 +10:00
Campbell Barton
0a17f4a711 Extensions: add an extensions-local site-packages
This will be used as the destination location for wheels.
Currently this is only added to the `sys.path` if it already exists.
2024-05-02 12:49:02 +10:00
Jesse Yurkovich
7dae89d276 USD: Add test to cover import of mesh attributes
Adds a test to validate the import of Mesh attributes for USD.

It reuses the recently added export attribute test file to generate the
USD file to load.

The test validates the current behavior in `main`. Missing data and bugs
are noted in comments and can be addressed afterwards.

Pull Request: https://projects.blender.org/blender/blender/pulls/121327
2024-05-02 03:57:25 +02:00
Campbell Barton
0f2827ff77 GHOST/Wayland: postpone mapping LIBDECOR windows
While there should be no user visible changes.
Follow LIBDECOR sample code by setting the app-id & title before
mapping the window.
2024-05-02 10:43:55 +10:00
Campbell Barton
a63e44a61f GHOST/Wayland: improve the error message for protocol errors
Include the interface that fails in a protocol error.
2024-05-02 10:28:35 +10:00
Campbell Barton
f735e4e611 GHOST/Wayland: prevent eternal loop in case of an error creating windows
Check & print a message if there is an error creating the window.
In both cases Blender will fail to start, it's just better to exit
quickly with a message instead of hanging.
2024-05-02 10:28:35 +10:00
Campbell Barton
2d152db090 GHOST/Wayland: use XDG_CURRENT_DESKTOP to detect GNOME
This change was made previously [0] but reverted as it caused the
title-bar to disappear on Ubuntu (see #121241).
Check if the value is set to GNOME delimited by `:`.

Previously checking the interfaces was used which has the down-side
that any compositor that adds `gtk_shell*` support may hang on startup
because of bugs in Blender/LIBDECOR as happened with WAYFIRE,
see reply to #76428.

[0]: 3a5389d5abe00aa229b5c6d35d346cb8f7cbe649
2024-05-02 10:22:39 +10:00
Campbell Barton
523d84db85 Fix incorrect XDG_CURRENT_DESKTOP check
The string was checked for equality when the spec allows for `:`
delimiter characters.
2024-05-02 10:20:58 +10:00
Campbell Barton
594ee2c766 BLI_string: add BLI_string_elem_split_by_delim
Add a utility function to check if one string contains another
when split by a delimiter.
2024-05-02 10:20:56 +10:00
Campbell Barton
848f1d8792 Cleanup: assign display as a variable on window creation
Reduces noise accessing the same value multiple times.
2024-05-02 10:20:54 +10:00
Jacques Lucke
5bc949b4a7 Fix: avoid tagging file as modified when clicking in node editor 2024-05-02 01:43:45 +02:00
Jacques Lucke
6cb9b7299d Fix: sample grid node uses wrong enum for data type
The used enum used the term "Value" instead of "Float".
Also the default value was wrong.
2024-05-01 23:29:56 +02:00
Jacques Lucke
9758d5fe90 Geometry Nodes: add regression tests for some newer nodes 2024-05-01 23:18:21 +02:00
Jacques Lucke
ebd2762239 Fix: crash when applying geometry nodes with bake node 2024-05-01 23:11:58 +02:00
Iliya Katueshenock
831e91c357 Geometry Nodes: support working with raw matrix values
These nodes allow working with the raw values that make up a matrix.
This can be used to construct a 4x4 matrix directly, without using the
`Combine Transform` node. This allows building transforms with arbitrary
skew, or projection matrices.

Pull Request: https://projects.blender.org/blender/blender/pulls/121283
2024-05-01 21:31:08 +02:00
Jacques Lucke
17cc5d694c Fix #121214: invalid owner_tree pointer when node tree is overridden 2024-05-01 21:29:04 +02:00
Aras Pranckevicius
877558858b Cleanup: Remove unused BLF matrix functionality
It was added back in 2010 (b25c32393d), but looks like nothing
whatsoever uses it by now. It is not exposed to Python either.

Pull Request: https://projects.blender.org/blender/blender/pulls/121207
2024-05-01 20:59:10 +02:00
Hans Goudey
4dbdd925d4 Assets: Add equality operators to AssetWeakReference 2024-05-01 13:24:39 -04:00
Hans Goudey
9c1fe82e06 UI: Enable "apply" handler for preview tile buttons
For example, allow calling an operator when clicking on a
preview tile button. Useful for brush assets where clicking
on an asset shelf item activates the brush.
2024-05-01 13:17:44 -04:00
Hans Goudey
b7a959061d Asset Shelf: Expose two functions publicly
Unused for now. Will be used by brush assets.
2024-05-01 13:11:56 -04:00
Hans Goudey
c2d1e2f1c8 Cleanup: Remove redundancy in a couple asset shelf function names
The "asset_shelf_" prefix is redundant with the namespace.
2024-05-01 13:11:55 -04:00
Hans Goudey
fb8f0311bd Assets: Expose function to find asset from a weak reference
Unused for now, will be used by brush assets operators.
2024-05-01 13:11:55 -04:00
Hans Goudey
14e8d0d9aa UI: Use "label tooltip" as a fallback for quick favorites menu text
Useful when the button has no display text but has been set up
to have a quickly accessible tooltip in its place (for example
a brush asset item in the asset shelf).
2024-05-01 13:11:55 -04:00