Commit Graph

113867 Commits

Author SHA1 Message Date
Omar Emara
cce896fe11 Fix #127292: Cryptomatte passes are missing meta-data
Meta-data are missing on Cryptomatte layers in the GPU compositor, so
they do not get saved using the File Output node. This is due to a use
after free error where a temporary string is used in the meta-data
population logic. This is fixed by assigning the string to a temporary
variable instead.

Thanks to Jorn Visser for finding the cause of the issue.
2024-10-22 11:50:04 +03:00
Lukas Tönne
71398478b2 Fix #128055: parentinv matrix uninitialized in old GPv2 files
In GPv2 the parentinv matrix is zero initially and only becomes valid
after setting the layer parent. This matrix must not be copied to the
GPv3 layers unless the parent is set.

In addition the parentinv matrix should also be computed when changing
the layer parent. This has been nominally added, except that a full
computation isn't possible without the actual grease pencil Object. This
means a local RNA property cannot update the parentinv matrix, this
needs to become a full-blown operator. The behavior now should be the
same as in GPv2 at least.

Pull Request: https://projects.blender.org/blender/blender/pulls/129304
2024-10-22 09:30:34 +02:00
Campbell Barton
f69fbb41c1 Fix #129225: Crash in modifiers & constraints with invalid enum values
Even though this is generally avoided, drivers don't prevent
invalid values being set. Further files from branches or files
written in the future may contain enum values not yet known.

Resolve by range checking enum values which are used to index arrays.
2024-10-22 15:56:58 +11:00
Campbell Barton
1d6add574d Fix #129167: Operator search can hang for some operator names
RNA label & description truncation could cause invalid UTF8
which caused BLI_string_search to hang.

Resolve by ensuring truncation of RNA descriptions & labels never
truncates a multi-byte sequences.

The issue with BLI_string_search would still be good to resolve but can
be handled separately.
2024-10-22 12:47:39 +11:00
Campbell Barton
40b5a4da2b Fix misleading assertion message setting built-in operator values 2024-10-22 12:46:39 +11:00
YimingWu
5fff95f519 Fix: Grease Pencil: Add back support for stroke direction overlay
Since GPv3 shader currently uses particle strand/points shader, we
need to modify that slightly to display the grease pencil overlays.

This adds the missing `vflag` attribute to the edit gpencil batch.

Co-authored-by: Clément Foucault <foucault.clem@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/128116
2024-10-21 18:47:24 +02:00
Jacques Lucke
7c7b8e1f28 Fix #129087: don't show empty panels in geometry nodes modifier
If a panel is detected to be empty, it is hidden automatically now.
This is the same behavior as in group nodes.
2024-10-21 15:47:16 +02:00
Jacques Lucke
84ffe3720d Fix #129217: crash when switching geometry nodes to tool mode with active viewer
The viewer does not work without a context and the context is derived from `snode.id`.
2024-10-21 15:33:21 +02:00
Jason Fielder
4408628a94 Fix: Metal: Resource leak when closing before all compilation batches have finished.
Addresses the case when Blender is shutdown before the
parallel compiler has finished processing all the shader batches.
The parallel compiler destructor will now attempt to terminate all
of the outstanding batches and free the shaders.

Authored by Apple: James McCarthy

Pull Request: https://projects.blender.org/blender/blender/pulls/129172
2024-10-21 14:58:50 +02:00
Aras Pranckevicius
28ea1d2f7b Fix: VSE scopes crash on float images
Regression since a904db3ee7 ("skip no-op colorspace transforms for
float images"), the newly added do_display_buffer_apply_no_processor
function did not handle case of both source and destination being
float images. This happens when VSE produces a float image, and
you turn on a Waveform scope.

Pull Request: https://projects.blender.org/blender/blender/pulls/129293
2024-10-21 14:43:56 +02:00
Jacques Lucke
d7368e0068 Cleanup: remove unused variable 2024-10-21 14:29:04 +02:00
Arye Ramaty
b686e72e57 Fix: wrong offset in the 'Has Neighbour' output of the 'Index of Nearest' node
The first encounter wasn't counted for, which resulted in a bias of one
(vertices with single neighbor return false), I initialized the counting from
1 instead of zero which seems to solve the problem.

Pull Request: https://projects.blender.org/blender/blender/pulls/129021
2024-10-21 14:21:41 +02:00
Jacques Lucke
21a24cf82b Fix #129263: improve measured node execution times
Measure the times of nodes and zones more explicitly in more cases instead
of relying on adding up smaller measurements.
2024-10-21 14:13:28 +02:00
Falk David
83e562aad4 Fix #129247: GPv3: Removing material doesn't remap some materials correctly
The issue was that the code that remaps the materials for when
a slot is removed was returning when the `material_index` attribute
didn't exist instead of continuing the loop over all drawings.

This issue was present both in `BKE_grease_pencil_material_remap`
and `BKE_grease_pencil_material_index_remove`
but `BKE_grease_pencil_material_remap` forced the `material_index`
attribute to be created, which meant that the early return
was never hit.

The fix fixes both issues:
* Continue instead of return.
* Don't create the `material_index` attribute in `BKE_grease_pencil_material_remap`
  if it doesn't exist.

Pull Request: https://projects.blender.org/blender/blender/pulls/129288
2024-10-21 14:11:11 +02:00
Falk David
b05e9f7bd6 Fix #127523: Missing update when updating positions with Python
The issue was that the strokes were not using the `POLY` type and
needed to be tagged.

This adds a function `tag_positions_changed` on the `GreasePencilDrawing`
so that the high-level python API can tag the positions if
the `point.position` attibute is written to.

Pull Request: https://projects.blender.org/blender/blender/pulls/129292
2024-10-21 14:10:32 +02:00
Alaska
d92ee66889 Fix #128905: Clarify EEVEE volumetric shadows tool tip
Make the tool tip for the volumetric shadow option in EEVEE
easier to understand.

Pull Request: https://projects.blender.org/blender/blender/pulls/128918
2024-10-21 14:08:24 +02:00
Jacques Lucke
f729d98fa4 Fix #129269: can't load images packed into the .blend file
The issue only happened when compiling with clang which
apparently evaluated the parameters in a different order.

`IMB_steal_encoded_buffer` sets `ibuf->encoded_size` to 0.
2024-10-21 13:13:58 +02:00
Campbell Barton
c836c0a20e Fix #129151: Crash showing tool-tips from dynamic enums
Duplicate descriptions for dynamic enum menu items to resolve
use-after-free error.
based on !129008.

Ref !129164

Co-authored-by: Julian Eisel <julian@blender.org>
2024-10-21 21:59:13 +11:00
Lukas Tönne
41655fcb3d Fix #129255: Color modifier uses wrong material slot index
This worked in simple cases because the material slot index gets clamped
so negative slot indices become slot 0.

Pull Request: https://projects.blender.org/blender/blender/pulls/129287
2024-10-21 12:26:57 +02:00
Pratik Borhade
5ffab634d8 Fix: GPv3: Missing active vertex paint tool settings in side panel
Wrong context string for gpv3 vertex paint mode.
`.greasepencil_vertex` is being used in `GreasePencilVertexPanel`

Pull Request: https://projects.blender.org/blender/blender/pulls/129285
2024-10-21 11:21:16 +02:00
Omar Emara
bce20b935c Fix #129205: Crash when Cryptomatte picking while rendering
Blender crashes when picking Cryptomatte while rendering. This is
because pass data are not yet allocated. To fix this, we just fail the
picking until data becomes available.
2024-10-21 11:47:30 +03:00
Pratik Borhade
33518d3039 Fix: GPv3: Drop operation crash when drag type is not node
Crash is poll function when drag type is other than layer/group For
example: dragging some element from outliner to layer list.
Also removed redudant check when returning from function.

Pull Request: https://projects.blender.org/blender/blender/pulls/129246
2024-10-20 12:21:07 +02:00
Sean Kim
15be5b7708 Fix #129204: Multires normal automasking broken for certain brushes
Introduced in a4c9c01f31

Pull Request: https://projects.blender.org/blender/blender/pulls/129236
2024-10-19 01:14:00 +02:00
Hans Goudey
c98da9d971 Fix #128656: Dynamic topology undo bugs when mixing memfile undo
Caused by 889b142924
which added the early return for the BMesh case.
2024-10-18 16:47:23 -04:00
Hans Goudey
8bb30e2c72 Fix: Build error after recent sculpt fix
Missing from 9f3cb8b74e.
2024-10-18 15:59:36 -04:00
Sean Kim
ffa4f6eaba Fix #129085: Face set from Masked operator doesnt work with Multires
When the operator was ported away from the old PBVHVertRef
implementation, the corresponding Multires mask elements were never
accessed correctly.

Pull Request: https://projects.blender.org/blender/blender/pulls/129137
2024-10-18 21:46:36 +02:00
Hans Goudey
9f3cb8b74e Fix: Potential nested threading issue with thread local storage
We would have to use task isolation here because of the use of
`EnumerableThreadSpecific`. Anyway, nested threading isn't
helpful because of the relatively small node sizes.

Pull Request: https://projects.blender.org/blender/blender/pulls/129222
2024-10-18 20:04:31 +02:00
Scott-Dubinsky
b785484917 Fix: Extra return in node tools data-block handling
Pull Request: https://projects.blender.org/blender/blender/pulls/128457
2024-10-18 20:03:32 +02:00
Germano Cavalcante
97816b3936 Fix #129161: Snap Toggle turning on after confirming with 'Set Snap Base'
A smaller enum value was passed to ENUM_OPERATORS, causing bitwise-not
issues.
2024-10-18 14:29:11 -03:00
Falk David
df3796a668 Fix: GPv3: Interpolation tool doesn't fail if no frame mapping is found
The `find_curve_mapping_from_index` function could fail if no
`interval` was returned from `find_frames_interval`, but this error
was not handled by the caller. This meant that
`InterpolateOpData::from_operator` could create empty
`InterpolationPairs` for every layer. In this case, the operator would
not do any interpolation, but it would still create a keyframe.

The operator shouldn't try to interpolate when there are no mappings
found.

The fix makes `find_curve_mapping_from_index` return `true`
when it succeeds. Then it checks if any mappings have been found
and if none were found returns `nullptr` from `InterpolateOpData::from_operator`.
The operators can then check if the `InterpolateOpData` exists
and otherwise exit.

Pull Request: https://projects.blender.org/blender/blender/pulls/129212
2024-10-18 19:24:23 +02:00
Falk David
1906446716 Fix: GPv3: Newly added objects don't have the Use Lights setting set
The issue was that the code checked for the `OB_GPENCIL_LEGACY`
type instead of `OB_GREASE_PENCIL`.
2024-10-18 18:09:10 +02:00
Pratik Borhade
74129b648b Fix #129142: GPv3: gesture select tools selecting only right handles
When selection type is set/and for gesture selection tools, Instead of
current attribute, all three selection attributes (`.selection`, `left_handle`,
`right_handle`) are reset in every iteration of for loop.

Pull Request: https://projects.blender.org/blender/blender/pulls/129147
2024-10-18 15:32:53 +02:00
Charles S
49bfcbc06d Fix: Replace MEM_freeN / MEM_delete mismatch in blurkernel
Discovered via an abort when using the blur brush.

Pull Request: https://projects.blender.org/blender/blender/pulls/128956
2024-10-18 15:20:32 +02:00
Julian Eisel
c8e75c03c3 Grease Pencil: Enable available catalogs by default in asset shelf
In grease pencil draw mode, enable the Draw, Erase and Utilities
catalogs by default for the asset shelf, meaning they will show up as
tabs in the shelf. For grease pencil sculpt mode it's the Contrast,
Transform and Utilities mode (consistent with mesh sculpt mode).

This makes the assets of the corresponding types easily available, even
without requiring the "Filter Brushes by Tool" asset shelf option
enabled. It also makes the catalogs and the contained brushes more
discoverable as an organization helper.

These catalogs were added in 09bd5a5777.
2024-10-18 14:42:51 +02:00
Julian Eisel
3a708a27f9 Sculpt/Paint: Disable asset shelf filtering by tool by default
Disables the "Filter Brushes by Tool" toggle of the brush asset shelf
options by default.

After further feedback, we want to keep this option disabled by default.
It's useful to be able to access all brushes from the asset shelf,
regardless of what the active tool is. In many cases you'd see the asset
shelf with only one brush, which wastes space and isn't a good look
design quality wise. The following commit will also enable some more
asset catalogs by default which should be useful for filtering brushes,
and reduce the need for filtering by active tool.

So all things considered, while having this option is useful, it can
remain disabled by default.
2024-10-18 14:16:58 +02:00
Jacques Lucke
30c3d17bb6 Fix #129190: invalid runtime data in lineart modifier after load 2024-10-18 12:38:00 +02:00
Falk David
078f16a8d5 Fix: GPv3: Interpolation not working with no selection
The interpolation tool in edit mode would create an empty keyframe if nothing in the
`from_drawing` and `to_drawing` was selected. This is not how the tool behaved in GPv2
so this is unexpected.

The fix  checks that if `only_selected` is used, there also is a selection in both of the
drawings in the pair, and otherwise fallback to interpolating all the strokes.
This is consistent with how the tool worked in 4.2.

Pull Request: https://projects.blender.org/blender/blender/pulls/129206
2024-10-18 11:38:46 +02:00
John Kiril Swenson
d5d81c5078 VSE: Switch to box select default for timeline
PR #128051 made some improvements to code by cleaning up properties and
simplifying logic.

However, the default tool in most spaces is box select. By switching to
box select default, there should be more front-facing consistency across
spaces while still retaining near-identical behavior.

This patch would fix the small bug listed in #128671 while keeping the
simplified code benefits from #128051.

Also:
- Move selection keymap items up in the Sequencer (Global) keymap so it
  is more visible (similar to Node Editor ordering).
- Split `side_of_frame` property for ctrl press keymap item into a
  separate keymap item on ctrl click for both LCS and RCS to avoid
  clashing with ctrl+drag for box selects in RCS.

Pull Request: https://projects.blender.org/blender/blender/pulls/129028
2024-10-18 05:50:09 +02:00
Harley Acheson
cf2d3d0867 Fix: Docking Called from Shortcut Without Status Bar
When starting a docking operation from an assigned shortcut, the source
area will be incorrect if the Status Bar is not currently being shown.
This PR just adds defaults that are never valid window coordinates.

Pull Request: https://projects.blender.org/blender/blender/pulls/129187
2024-10-18 04:28:33 +02:00
Arye Ramaty
116a55e46e Fix #128997: wrong evaluation of outputs in the Index of Nearest node
Pull Request: https://projects.blender.org/blender/blender/pulls/128998
2024-10-17 23:47:13 +02:00
Sean Kim
e01713be7c Fix #129135: Automasking topology doesn't work with certain brushes
Introduced in 915be63b01

Also fixes an unreported similar issue with BMesh

Pull Request: https://projects.blender.org/blender/blender/pulls/129139
2024-10-17 23:12:20 +02:00
Falk David
0a560582b5 Fix: GPv3: Python: Missing parent_group property on layer groups
This property was available for `layers` but was missed for layer groups.
Adds a `parent_group` property for layer groups that returns the
parent group if the group is inside another group.
For groups that are inside the root, returns `None`.

Pull Request: https://projects.blender.org/blender/blender/pulls/129168
2024-10-17 18:34:19 +02:00
Jacques Lucke
ca2058ab04 Fix #129128: broken data-block search for short names
If ifdef for `WITH_ANIM_BAKLAVA` accidentally removed the `else { ... }` branch
around `name = RNA_struct_name_get_alloc(...)`. For data-block names,
`BKE_id_full_name_ui_prefix_get` is used above which adds 3 extra letters before
the data-block name. This are removed again by the bug. Later code removes them
again leaving potentially an empty string.

Pull Request: https://projects.blender.org/blender/blender/pulls/129153
2024-10-17 16:59:35 +02:00
Falk David
c539ea792c Fix: GPv3: Reduce draw tool performance regression
During the painting operation, the `GreasePencilDrawing` is updated in-place.
Previously, we simply tagged the whole drawing for a topology update.
This meant that the triangulation and curve normals were recomputed
for (pretty much) every new input sample.

Since the draw tool only creates one new stroke, we can copy the
triangulation of all the other strokes and only recompute the triangulation
of the newly drawn stroke(s).

First, a new `triangle_offsets_cache` is added that is lazily computed.
The computation for this should be pretty cheap.
Then, a new function `Drawing::tag_topology_changed(const IndexMask &curves_to_update)`
is added. This function takes an index mask of curves and only updates
their triangle cache. The cache for the other curves is copied.

In a test file with around 400k points, recomputing the triangle cache
(every input sample) took around 45ms. This meant that there was a noticable
drop in frame rate. With this patch, the time for each sample goes down to
less than 0.1ms. The frame rate feels much better.

But, drawing a longer and longer stroke still makes this time go up,
because the triangulation for the single stroke becomes more and
more expensive. This will have to be improved further.

Part of #124149.

Pull Request: https://projects.blender.org/blender/blender/pulls/129115
2024-10-17 15:28:44 +02:00
Philipp Oeser
3c5103d9c9 Fix #129148: Weight/Vertex paint not switching to Blur with Shift
In both `essentials_brushes-mesh_vertex.blend` and `essentials_brushes-
mesh_weight.blend`, the brush is actually only called "Blur".

Pull Request: https://projects.blender.org/blender/blender/pulls/129158
2024-10-17 14:55:15 +02:00
Philipp Oeser
58248c34cb Fix: Linked/liboverride objects can get their materials assignments modified by drag and drop
Changes would be lost (or worse things can happen, see below), so this
is now prevented by polishing the polls for these operations.

Behavior of Materials in override objects was considered shaky as well (lost
on reload, no undo or crash on undo, see  #127605, #127606, #101552 in
general) , so conclusion was to prevent this on linked as well as liboverride
objects.

Pull Request: https://projects.blender.org/blender/blender/pulls/129064
2024-10-17 14:54:45 +02:00
Julian Eisel
5e5c387159 Fix: Another typo in brush asset deletion confirmation message 2024-10-17 14:44:17 +02:00
Julian Eisel
41b8ee1c48 Sculpt/Paint: Change label of asset update operator in menu for clarity
From feedback: "Update Asset" sounds more like receiving a new version
of the brush, while this actually saves the changed brush to the asset
library. "Save Changes to Asset" is more clear and fits well with the
labels of other menu items in the menu.
2024-10-17 14:36:05 +02:00
Julian Eisel
7decebe2c3 Fix: Typo in brush asset deletion confirmation message
Also use "cannot" instead of "can't", since that's less likely to be
misread. This is also noted in the human interface guidelines:
https://developer.blender.org/docs/features/interface/human_interface_guidelines/writing_style/
2024-10-17 14:20:07 +02:00
Lukas Tönne
d2210df6af Fix: GPv3: Interpolate tool uses selection in paint mode
Follow-up fix for #128769.

Selection is now taken into account for interpolation tool, but should
be ignored in paint mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/129150
2024-10-17 14:09:48 +02:00