Commit Graph

106897 Commits

Author SHA1 Message Date
Bastien Montagne
5e4360ada6 Merge branch 'blender-v4.1-release' 2024-02-16 15:16:39 +01:00
Bastien Montagne
88ba4dfaa3 Fix #118299: Crash in some cases with invalid/deprecated LibOverride data.
`BKE_lib_override_library_validate` used on fileread to ensure all
liboverrides are valid was using direct call to
`BKE_lib_override_library_free`. However, this was lacking the handling
of embedded dependencies (from liboverride PoV), in particular
ShapeKeys.

Since these shapekeys were still tagged as embedded liboverrides,
liboverride code would later assume their owner (mesh etc.) was also a
valid liboverride, leading to various potential issues.

Use instead `BKE_lib_override_library_make_local`, which also ensures
that embedded dependencies are handled properly.
2024-02-16 15:08:39 +01:00
Falk David
9b815dcc4b Cleanup: GPv3: Legacy stroke conversion 2024-02-16 15:02:42 +01:00
Pratik Borhade
1077aebaa6 GPv3: Duplicate layer
Port layer duplicate operator to Grease Pencil v3.

Pull Request: https://projects.blender.org/blender/blender/pulls/117974
2024-02-16 14:07:29 +01:00
YimingWu
975c226282 GPv3: Array Modifier
This migrates the Array modifier to Grease Pencil v3.

Pull Request: https://projects.blender.org/blender/blender/pulls/117836
2024-02-16 14:04:01 +01:00
Omar Emara
7683449877 Cleanup: Unused function warning in Denoise node
The warning happens when OIDN is disabled as a build option.
2024-02-16 14:10:11 +02:00
Bastien Montagne
0e75fcbf4d Silence warning about unused var in release builds. 2024-02-16 13:07:23 +01:00
YimingWu
ace5c9af2a GPv3: Vertex Weight Angle modifier
This ports the Vertex Weight Angle modifier to Grease Pencil v3.

Pull Request: https://projects.blender.org/blender/blender/pulls/117846
2024-02-16 12:30:43 +01:00
Philipp Oeser
dd71f5287b Merge branch 'blender-v4.1-release' 2024-02-16 12:29:10 +01:00
Philipp Oeser
1a2edde400 Fix #118225 possible crash double clicking on certain anim channels
The intend in the report was to rename a linked object in the NLA
channels. The operator to rename actually does everything right, it
detects that the object is linked and passes through to other operators.

The crash then happens in the attempt to select keyframes of channels
(also doubleclick n the keymap) -- in `select_anim_channel_keys`.

The problem is that `bAnimListElem` `key_data` cannot be expected to be
an `FCurve` in all cases. Code does though, it always casts, but this is
unreliable, basically this would fail for all of the "summary" channels
or any channel type (e.g. mask layers etc.), either it is NULL or
garbage data.

So to resolve, we just check the `bAnimListElem` type -- if it is not
ALE_FCURVE we can early out (preventing the crash).

NOTE: this changes behavior of double clicking on a summary channel that
cannot be renamed slightly in that it will not deselect its keys anymore
(it was not selecting any keys anyways, this is actually more in line of
what would happen if you just select another channel -- this also leaves
key selection alone -- so this is actually an improvement as well imho)

Pull Request: https://projects.blender.org/blender/blender/pulls/118251
2024-02-16 12:28:13 +01:00
Jeroen Bakker
c790e6e49d OpenGL: Reduce Shader Switches
Specialization constants was always switching shader even when the
constants were not changed. An early exit path was never taken.

The performance improvement should not be noticable to end users.
But would match with the intention of the design of specialization
constants.

Pull Request: https://projects.blender.org/blender/blender/pulls/118315
2024-02-16 12:26:10 +01:00
Pratik Borhade
71adac1c39 Cleanup: Typo in namespace 2024-02-16 15:41:44 +05:30
Christoph Lendenfeld
10682abc56 Fix: Proportional editing indicator in the Dope Sheet not respecting NLA offsets
The issue was that the center of the transformation wasn't
mapped to the NLA offset.
Fix it by calling the function `BKE_nla_tweakedit_remap`.

Pull Request: https://projects.blender.org/blender/blender/pulls/118205
2024-02-16 10:55:47 +01:00
Omar Emara
f590b36e62 Merge branch 'blender-v4.1-release' 2024-02-16 10:55:29 +02:00
Omar Emara
1cae3d60e6 Fix #118344: Crash when File Output node has no input
The File Output node crashes if it has no image input. That's because we
would be attempting to save a zero sized image. So ensure that the node
has a non zero canvas before saving anything.
2024-02-16 10:51:36 +02:00
Jesse Yurkovich
8dce17e2be Merge branch 'blender-v4.1-release' 2024-02-15 23:42:19 -08:00
Jesse Yurkovich
c8f2a5cc42 UI: Fix FILE_PT_operator drawing when using UI layout panels
The `FILE_PT_operator` panel used in the file browser does not correctly
allow the new UI layout panels to be drawn correctly.

The layout panels depend on drawing the background so that different
colors can denote each panel section. In the case of `FILE_PT_operator`,
this background drawing is skipped entirely leading to a situation where
there's no panel delineation at all.

Forcing the background to be drawn leads to a second problem where
the "typical" panel colors are not used in this part of the file
browser. We need to match the surrounding area otherwise a much
lighter shade of gray will be used and look out of place.

The fix is to extend the processing for PANEL_TYPE_NO_HEADER to account
for both of the above situations.

Pull Request: https://projects.blender.org/blender/blender/pulls/118231
2024-02-16 08:40:32 +01:00
Omar Emara
e7ffe74920 Realtime Compositor: Support canceling evaluation
This patch adds support for canceling compositor evaluations for the
realtime compositor. Only the canceling of the Denoise operation is
supported for now. That's because inter-operation canceling is not
feasible since all work will have been submitted to the GPU driver
before the user is able to cancel. So some kind of blocking operations
would need to used to actually allow canceling, which is not something
we are going to investigate as part of this patch.

Pull Request: https://projects.blender.org/blender/blender/pulls/117725
2024-02-16 08:32:03 +01:00
Campbell Barton
8cfcd64185 WM: add WM_drag_get_string{_firstline} accessor functions
Add utility functions to access the drag string with an "_firstline()"
to avoid having to in-line first line access.
2024-02-16 16:34:10 +11:00
Campbell Barton
64843cb12d UI: support dropping text into the text editor & Python console
The Python console only supports dropping a single line of text,
see code-comments for details.
2024-02-16 14:27:06 +11:00
Campbell Barton
9eadae51fc WM: support events that drop strings
Previously only dropping file-paths was supported by the WM logic,
even though GHOST supported strings.

This is used for dropping a text selection as well as URL's
(on X11 & Wayland).

Add WM_DRAG_STRING, created from GHOST's GHOST_kDragnDropTypeString.
2024-02-16 14:27:02 +11:00
Campbell Barton
eafecb2bc3 Cleanup: remove unused WM_DRAG_VALUE 2024-02-16 14:26:56 +11:00
Campbell Barton
23a8ba3cd3 Cleanup: remove blenfont library linking from blenloader
This was only needed for tests.
2024-02-16 14:26:54 +11:00
Campbell Barton
adaf791dd7 Cleanup: remove unused struct members in uiHandleButtonData 2024-02-16 14:26:53 +11:00
Campbell Barton
5ae0b0c7f4 Cleanup: use the term "sincos" in convexhull_2d for clarity
The 2D vector calculated from edge vectors represents sin & cos which
wasn't obvious.
2024-02-16 14:26:51 +11:00
Campbell Barton
503d56e2c8 Cleanup: use const variables in convexhull_2d_sorted for clarity 2024-02-16 14:26:49 +11:00
Campbell Barton
37475d252f Cleanup: use "use_" prefix for RNA boolean 2024-02-16 14:26:47 +11:00
Campbell Barton
7582b15c4c Cleanup: spelling in comments 2024-02-16 14:26:46 +11:00
Campbell Barton
9992718703 Cleanup: restore macro to avoid repetition for swapping values 2024-02-16 14:26:45 +11:00
Jesse Yurkovich
551b846bcd Merge branch 'blender-v4.1-release' 2024-02-15 16:55:12 -08:00
Jesse Yurkovich
9e8bbc1129 Fix: USD hooks leak
If hooks are not unregistered Blender will report a leak on exit.

Store the hooks as unique_ptrs to remove manual memory management and
encapsulate the previous global list inside a function. These changes
ensure that everything is cleaned up on termination.

Also makes a small change to the hook documentation for a missing
`import` statement.

Pull Request: https://projects.blender.org/blender/blender/pulls/118294
2024-02-16 01:53:33 +01:00
Jacques Lucke
d803b6acca Cleanup: simplify usage of Map 2024-02-15 22:51:18 +01:00
Jacques Lucke
d9d9ff1dcd Nodes: hide shader input in node properties panel
This was missing in d27a1c47fa.
2024-02-15 21:55:53 +01:00
Jacques Lucke
75e9056cac Geometry Nodes: support group ids in Sample Nearest Surface node
This adds group ids to the `Sample Nearest Surface` node. This allows e.g. finding
the closest point on a specific mesh island.

Three new sockets are added:
* `Group ID`: Is evaluated on the face domain and splits the input mesh into  multiple
  parts, each with its own id.
* `Sample Group ID`: Determines in which group the closest nearest surface is detected.
* `Is Valid`: Outputs true if a nearest surface was found, it's false if the group is empty.

Pull Request: https://projects.blender.org/blender/blender/pulls/118150
2024-02-15 20:35:02 +01:00
Bastien Montagne
0801fcd6b3 Cleanup: make format 2024-02-15 19:49:58 +01:00
Bastien Montagne
f8541337bb IDType: Refactor some 'conversion' helpers.
Use IDTypeInfo data as much as possible, to avoid too many functions
`switch`ing over all ID type values.

Now only `BKE_idtype_idcode_to_index` and `BKE_idtype_idfilter_to_index`
do that, all others are using one of the above to retrieve the valid
IDTypeInfo and return data from it.

Also tweaked some namings to make them more consistent.

No behavioral changes expected here.
2024-02-15 19:45:10 +01:00
Bastien Montagne
f21540f428 Cleanup: IDTypeInfo: Use std::array for the static array of ID types.
Also add a hard, direct failure in `id_type_init`, in case one ID type
is missing processing there.

No behavioral changes expected here.
2024-02-15 19:45:10 +01:00
Bastien Montagne
d083f69295 IDType: Add FILTER_ID_ for deprecated IPO ID type.
Although this type is not much encountered anymore, it's simpler and
cleaner to have a FILTER value for all known ID types.
2024-02-15 19:45:10 +01:00
Bastien Montagne
df0efda0d6 Refactor: IDTypeInfo: Add info about 'potentially used IDTypes'.
This data was 'hidden' away in a util in
`lib_query.cc`, which made it hard to discover and keep up-to-date.

However, as shown by e.g. #108407, critical low-level features in ID
management code, such as remapping, now rely on this information being
valid.

Also simplify `BKE_library_id_can_use_filter_id` and
`BKE_library_id_can_use_idtype` to make them more generic, relying on
IDTypeInfo to retrieve IDtype-specific info.

No behavioral changes expected here.
2024-02-15 19:45:10 +01:00
Bastien Montagne
f674e486e1 Merge branch 'blender-v4.1-release' 2024-02-15 18:26:31 +01:00
Bastien Montagne
401a2397db Fix mistake in fix for #108407 (crash on deleting shapekeys).
Own d38824bc02 mistakenly added the 'FILTER_ID_KE' to the list IDTypes
usable by Lights (`ID_LA`) instead of Lattices (`ID_LT`)...

Note that this did not cause any additional issue, but only missed part
of the expected fix.
2024-02-15 18:25:50 +01:00
Sebastian Parborg
91100fc6d4 Merge branch 'blender-v4.1-release' 2024-02-15 18:08:35 +01:00
Sebastian Parborg
86522d9ab1 Fix #118276: IDs were remapped by mistake when copying in the VSE
All IDs in the current bmain were remapped while it should have only
been done for IDs in the dummy scene created for the copy operation.
2024-02-15 18:06:54 +01:00
Miguel Pozo
50a3a0253d Revert "EEVEE: Remove Thickness output"
This reverts commit 91b727028a.
The change was only meant for 4.1.
Thickness output is required for EEVEE-Next.
2024-02-15 18:04:30 +01:00
Miguel Pozo
5eac9e6095 Merge branch 'blender-v4.1-release' 2024-02-15 17:59:44 +01:00
Miguel Pozo
91b727028a EEVEE: Remove Thickness output 2024-02-15 17:57:20 +01:00
Hans Goudey
ca49998049 Cleanup: Make format 2024-02-15 11:36:28 -05:00
Hans Goudey
af9709089e Cleanup: Remove unnecessary set curve type optimization
Now that attributes use implicit sharing, copying CurvesGeometry
is relatively cheap, and the complexity of this function isn't worth
the remaining optimization of avoiding user count updates.
2024-02-15 11:35:33 -05:00
Christoph Lendenfeld
0c560fb7ef Fix #112395: Proportional editing indicator in Graph Editor and Dope Sheet
When using proportional editing in the Graph Editor or the Dope Sheet,
the GUI displays a circle suggesting that the influence is limited in x and y.

In reality those editors only look at the x-axis to determine which keys to influence.

This PR fixes that by adding a new drawing function for those editors that
draws 2 lines to indicate a range.

In theory this can be a feature in other 2D editors in the future.
I assume the VSE would benefit from this as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/118196
2024-02-15 16:50:34 +01:00
Hans Goudey
1bf6d8b0b9 WM: Move report list to runtime struct
These reports were embedded in the window manager DNA,
but they were always cleared when reading it from files. It's clearer
to just not store the reports in files at all. I also moved the reports
initialization and freeing to the constructor and destructor of the
runtime class.

This is the only place `ReportList` was embedded in DNA, so
after this we can move that to use C++ features if we want.

Pull Request: https://projects.blender.org/blender/blender/pulls/118329
2024-02-15 16:42:35 +01:00