Commit Graph

134987 Commits

Author SHA1 Message Date
Harley Acheson
4e8cc76c2d Cleanup: Make Format
Just changes resulting from running make format.
2024-04-10 18:34:52 -07:00
YimingWu
5fcbbb5b42 FCurve: Separate fcu->bezt check in deduplicate
This is to avoid uncessary assertion exception when `fcu->totvert < 2`.

Also fixes #120155

Pull Request: https://projects.blender.org/blender/blender/pulls/120158
2024-04-11 03:05:35 +02:00
Hans Goudey
19e94bf9d2 Fix: Crazyspace memory leak with curve modifier
This free was missing compared to BKE_sculpt_get_first_deform_matrices
2024-04-10 18:36:50 -04:00
Iliya Katueshenock
de6834e5c2 Cleanup: Unused argument
`ntree` is unused after 3357658c13

Pull Request: https://projects.blender.org/blender/blender/pulls/120495
2024-04-11 00:36:31 +02:00
Jesse Yurkovich
df4ccf2eed Collection Exporters: Add Alembic support
Enable Alembic support for collection exporters.

Pull Request: https://projects.blender.org/blender/blender/pulls/120493
2024-04-11 00:24:06 +02:00
Iliya Katueshenock
3357658c13 Cleanup: Nodes: Remove unnecessary socket tooltip check
There is no context in which socket can't have data to display in tooltip.
The most basic info is the name of the socket. Such tooltip can be even
for output Shader socket. If is there, socket tooltip can be built from
data of socket declaration. Description, constraints and so. Such as supported
components. At point socket was used in evaluation on CPU, there is value
to display. Any trivial types or statistic about them value. Fields can
have dependencies, which is also can be known from evaluated value.

Pull Request: https://projects.blender.org/blender/blender/pulls/120492
2024-04-11 00:21:34 +02:00
Hans Goudey
563bb7e1da Cleanup: Grammar in mesh creation comments 2024-04-10 16:06:34 -04:00
Hans Goudey
48f77b6c24 Fix #120313: Paint mode vertex selection overlay skips vertices
Before bace4c9a29, the selection was uploaded twice: both face
and vertex selection. Afterwards only the face selection was uploaded,
but the vertex selection is necessary for the paint mode vertex overlay.
Now choose between uploading the vertex or face attribute based on the
paint overlay flags.
2024-04-10 14:22:42 -04:00
Germano Cavalcante
ce354c4693 Fix #120484: Typo in Blender Python API docs 2024-04-10 14:28:22 -03:00
Lukas Tönne
efd07d8207 Fix #118509: GPv3: fix broken drawing array compression function
The `remove_drawings_with_no_users` did not work properly when removing
more than one drawing at a time. It created incorrect drawing indices
that were larger than the drawings array, causing crashes down the line.

The new implementation should be both cleaner and more efficient,
avoiding a loop over all frames for every drawing removed.

This complements #119337 which fixes disappearing keyframes during
transform.

Pull Request: https://projects.blender.org/blender/blender/pulls/120433
2024-04-10 18:23:33 +02:00
Julian Eisel
335d379667 UI: Indicate type of search in keymap search button
Shows either "Search by Name" or "Search by Key-Binding" as placeholder text in
the search button. This makes it more clear what's expected to be entered here.

Personally I often did/do the mistake of searching for the wrong thing in this
button, because I forgot that I changed it earlier. The placeholder text can
avoid this mistake.

Pull Request: https://projects.blender.org/blender/blender/pulls/113681
2024-04-10 16:36:58 +02:00
Sergey Sharybin
70b3b018c1 Fix #113182: Crash when animating Viewport visibility of Curves / GPv3 object
This is actually a deeper issue, which roots to the fact that updating
relations of the dependency graph does not properly handle cases when an
operation was previously skipped from evaluation (i.e. as a visibility
optimization).

The fix is to preserve needs-update flag throughout relations update of
a dependency graph, similar to the entry tags.

Pull Request: https://projects.blender.org/blender/blender/pulls/120477
2024-04-10 16:26:31 +02:00
Clément Foucault
99ebc1f7d3 BLI: Fix inverted 0 determinant for infinite orthographic projection
This was creating issues with triangle winding order since
the resulting matrix was degenerate (0 determinant). Which
caused the Draw manager to wrongly invert the winding.

This fixes a bug in EEVEE-Next mesh voxelization for volume
rendering (with accurate method).
2024-04-10 15:53:51 +02:00
Philipp Oeser
1fdd7cd098 Fix #120417: VSE crash rendering a scene strip with missing Editing data
In case a scene strips `Input` was set to `Sequencer`, but the scene did
not actually have `Editing` data (e.g. when just adding a `New` scene as
scene strip), blender would crash trying to render.

Now simply check if the required `Editing` data is present before
proceeding.

Pull Request: https://projects.blender.org/blender/blender/pulls/120418
2024-04-10 14:21:21 +02:00
Jacques Lucke
55cbb9f271 Fix #120402: memory leak in volume grid handling
The openvdb tree was not freed correctly because the destuctor
of the `shared_ptr` was not run.
2024-04-10 14:10:56 +02:00
Hans Goudey
86bde1b58b Cleanup: Make format 2024-04-10 08:01:58 -04:00
Pratik Borhade
5bc033b4d7 UI: Add Rename operator in bone collection context menu
Operator to rename tree view item already exists: `UI_OT_view_item_rename`
Add this in context menu as discussed in !120003

Pull Request: https://projects.blender.org/blender/blender/pulls/120086
2024-04-10 13:09:32 +02:00
Jacques Lucke
01ee34ebd1 Curves: add operator to set bezier handle types
This adds an operator to set the handle types of bezier curves. It also
adds the same shortcut that is available in the legacy curve edit mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/120426
2024-04-10 13:08:50 +02:00
Falk David
554b064214 Fix #120459: GPv3: Issue in conversion for layer parents
The layer parenting did not account for storing an
initial parent inverse matrix (to "keep transform").

This adds this matrix, stores it in DNA, and uses it
when we compute the parent matrices on demand.

Note: This PR does not set the parent inverse matrix
outside of conversion from GPv2. Support for
"keep transform" parenting will have to be added
in another PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/120462
2024-04-10 12:41:28 +02:00
Pratik Borhade
c8f275b777 GPv3: Deselect everything from all visible drawings when pasting strokes
To match with gpv2 behavior, fill selection attribute of all the visible
drawings with "false" value to deselect them so only the pasted stroke
from the clipboard is selected.

Pull Request: https://projects.blender.org/blender/blender/pulls/120363
2024-04-10 12:31:51 +02:00
Philipp Oeser
605de2f094 Fix #120421: Animated "Burn metadata into image" ignored during render
Seems like scene `RenderData` only gets synched once from `Scene` to
`BaseRender` in `RE_InitState` .
Animation on it is only evaluating on the scene, so the the `BaseRender`
`RenderData` is not properly updated here.

However `R_STAMP_DRAW` is part of that and it is the `BaseRender`
`RenderData` that is checked in `do_render_full_pipeline` (not the
`Scene` one) to determine if we want to stamp.

Later calls to `BKE_render_result_stamp_info` / `renderresult_stampinfo`
/ `stampdata` always get passed the scene, so individual animation stamp
details (such as Render Time) work properly.

So to resolve, use the `Scene` `RenderData` (rather than the
`BaseRender` one) for proper animation update.

NOTE: this (not updating animation of members of `RenderData`) might
actually be a problem elsewhere, too -- havent checked on this in detail
though

Pull Request: https://projects.blender.org/blender/blender/pulls/120429
2024-04-10 11:19:02 +02:00
Pratik Borhade
d049cd1dbf Fix: GPv3: Clear copy strokes buffer if nothing is selected during copy
If `clipboard.curves` has some curve and the copy operation is called
again when nothing is selected, the buffer is expected to be cleared.
Otherwise the paste operations will paste the previous copied curves.

Pull Request: https://projects.blender.org/blender/blender/pulls/120454
2024-04-10 11:15:47 +02:00
Campbell Barton
1fb36c4f5e Cleanup: avoid redundant string formatting 2024-04-10 14:48:56 +10:00
Campbell Barton
16bc74edac Cleanup: remove type hints & f-strings from core scripts
Follow conventions for core scripts.
2024-04-10 12:37:16 +10:00
Campbell Barton
74a65d77cc Cleanup: spelling in comments 2024-04-10 12:28:33 +10:00
Campbell Barton
35011e9c4e Fix error accessing the add-on install "target" without a context
Introspecting the add-on install operator from operator cheat-sheet
raised a Python exception.
2024-04-10 11:54:54 +10:00
Campbell Barton
d3ae39571e Fix crash using "--command" on Windows
Use after free error accessing command line arguments on windows.
Resolve by duplicating the arguments when a "--command" is passed in.
2024-04-10 11:52:54 +10:00
Hans Goudey
256dbce9fa Cleanup: Make format 2024-04-09 21:23:18 -04:00
Sean Kim
ea1cfdbf83 Fix #120400: Remove cyclic dependency of pbvh type when building bmesh pbvh
This PR fixes a crash when enabling Dyntopo.

When the PBVH generation code for BMesh was changed in b3aca5b28f, a
bug was introduced where dependent code to generate necessary layers
for BMesh could no longer access the PBVH type, as it was not generated
yet. As the type is known in the code at time of construction, I opted
to add parameters specifying the PBVHType to necessary methods when
accessing attributes.

Pull Request: https://projects.blender.org/blender/blender/pulls/120445
2024-04-10 02:57:34 +02:00
Hans Goudey
193789f036 Cleanup: Use utility function to sample triangle bary coord
Also move the declaration of the BVH tree closer to its use.
2024-04-09 20:45:55 -04:00
Iliya Katueshenock
ebd04b5660 Fix: Crash calculating edges of empty mesh
At some point (Fill Curve node in my case) it is possible to have
empty task of edges. Simplest fix - ignore such tasks. In future
this might be improved (see: #120224).

Pull Request: https://projects.blender.org/blender/blender/pulls/120330
2024-04-10 02:36:26 +02:00
Iliya Katueshenock
a419152589 Fix: Matrix socket is always visible
Fix of typo in weakly typed API.

Pull Request: https://projects.blender.org/blender/blender/pulls/120337
2024-04-10 02:30:11 +02:00
Germano Cavalcante
c9fa73a379 Fix #120443: Knife tool loses precision on edges with high clip distance range
The previous algorithm for interpolating the vertices of an edge using
a lambda in screen space was heavily dependent on the resolution of the
projection matrix, leading to precision loss when the clip distance
range was high.

The updated algorithm now adjusts the lambda according to the
perspective before performing the interpolation, which improves
precision regardless of the clip distance range.
2024-04-09 20:56:02 -03:00
Harley Acheson
7226b52728 UI: Removal of GRAPH_OT_keys_to_samples Confirmation
Removal of the dialog that pops up to confirm this operator. The
Animation & Rigging module feels this isn't needed since this action
is quite visual and hard to miss. This operator is also not often
used and might get removed in future as unnecessary.

Pull Request: https://projects.blender.org/blender/blender/pulls/120074
2024-04-10 00:45:44 +02:00
Harley Acheson
d2d810f11a UI: Splash Screen Import Changes
Removal of "What's New" button, addition of a section divider, and many
very small changes to the text, some reordering of items.

Pull Request: https://projects.blender.org/blender/blender/pulls/118224
2024-04-09 22:57:06 +02:00
Clément Foucault
c3088d6558 EEVEE-Next: Add back volume reprojection
This is done almost the same as legacy EEVEE.

The main difference is that we now take into
account the change in volume Z bounds during
reprojection.

The viewport smoothing experience as also be
improved with less blurring when moving
objects.

We also still do the reprojection during
final rendering between samples. This improves
the convergence as the input to the film TAA
is less noisy.

Pull Request: https://projects.blender.org/blender/blender/pulls/120320
2024-04-09 19:36:45 +02:00
Clément Foucault
20bc1cbb57 Fix: EEVEE-Next: Volume: Wrong voxelization from accurate method 2024-04-09 19:06:34 +02:00
Falk David
eec9c50580 Fix #120436: "Show Fill Color" setting not working
The flag was completly unused in the code.
Now this flag does what it says: While drawing,
the fill color is (almost) not visible.

Pull Request: https://projects.blender.org/blender/blender/pulls/120438
2024-04-09 17:59:20 +02:00
Nathan Vegdahl
05226881f7 Anim: make CombinedKeyingResult plain old data
The data in CombinedKeyingResult was using BLI's Array type, which
heap allocates.  However, we know the array size at compile time,
and therefore can use std::array instead, as suggested in Array's
documentation.  This makes CombinedKeyingResult a
plain-old-data class.

Pull Request: https://projects.blender.org/blender/blender/pulls/120425
2024-04-09 17:27:20 +02:00
Amelie Fondevilla
d0d4bf2068 Fix #118509: GPv3: frames disappear during transform in the timeline
While selecting and transforming multiple grease pencil frames in the
timeline, frames would sometimes disappear. This happened when the
transformation overlapped, meaning when a frame replaced another moving
one in the timeline. The frames transformation was happening in place
and in series, and thus leaded to the initial position of the frame to
be removed, even if it was occupied by a freshly transformed framed.

This commit fixes the issue by storing two separate maps in the
transform data structure instead of one, one map to store the static
data, meaning the frames that are not affected by the transform, and
another one for the moving data, meaning the frames that are affected by
the transform.

Some changes were made to account for the potential duplication of the
frames (move + duplicate):
* the map of the duplicated frames was renamed to a more explicit name,
* when a duplication occurs, the original frame is stored in the static
  frames map, and the duplicate is stored in the moving frames map,
* thus the check for the duplicate flag of the operator is now done at
  the init step of the transform, instead of the update step, so that
  the maps are initialized accordingly.

Co-authored-by: Lukas Tönne <lukas@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/119337
2024-04-09 16:44:34 +02:00
Sybren A. Stüvel
bc764072f5 Anim: Avoid loading alpha channel from theme for keyframe drawing
The theme has a color for each keyframe type. This is exposed in RNA and
the preferences UI as an RGB color, so without alpha channel. The code
that loads the color from the theme, however, does include that
unsettable alpha channel, though.

In practice this doesn't cause issues, as the versioning code ensures
that the default colors are stored with `alpha=uint8_t(255)`. While
developing, however, this caused me considerable headscratching, as I
was missing that little bit of versioning code, which means that the
default color was set to all-zeroes, and thus had a zero alpha.

This is now resolved by altering the drawing code to only load the RGB
component from the theme. This way only the user-settable bytes are
loaded, while the alpha component is handled a different way (setting it
to an absolute value, instead of multiplying the theme value).

No user-perceivable changes, just some developer comfort.

Pull Request: https://projects.blender.org/blender/blender/pulls/120311
2024-04-09 16:34:35 +02:00
Alaska
eff4fe24cf Cycles: Properly default to Metal-RT off unless GPU is a M3 or newer
Ever since commit [1], `use_metalrt_by_default` will be True
if the GPU being used is not a M1 or M2 based system.
The intention of this was to enable MetalRT by default for
M3 and newer devices that have hardware for ray traversal.

However the side effect of this change was that all AMD GPUs would
have `use_metalrt_by_default` set to True. Which appears to be the
main culprit causing crashes on older AMD GPUs in #120126.
Since these GPUs don't support MetalRT.

This commit fixes this issue by only setting
`use_metalrt_by_default` to True if the GPU is not M1 or M2 based,
and the GPU is Apple Silicon based. Which equates to M3 or newer.
Which is the original intent of this code.

This resolves the issue where AMD GPUs were being told to use MetalRT
by default, when they shouldn't be.

[1] 322a2f7b12

Pull Request: https://projects.blender.org/blender/blender/pulls/120299
2024-04-09 16:19:24 +02:00
Omar Emara
26f059ae55 Realtime Compositor: Support variable scaling
This patch adds support for variable scaling in the Scale node for the
Realtime Compositor. This is supported for the CPU compositor.

Pull Request: https://projects.blender.org/blender/blender/pulls/120314
2024-04-09 16:02:47 +02:00
Jacques Lucke
d3c98e6753 Fix #119702: Set Position node behaves incorrectly on instances with selection
The selection was not taken into account properly and uninitialized data was used.

Pull Request: https://projects.blender.org/blender/blender/pulls/120409
2024-04-09 13:11:19 +02:00
Pratik Borhade
1a37017244 Fix #120144: Invert Visible doesn't invert Face Sets properly
Caused by 53418fc3a1.
corner vertices of hidden face sets are not `1/true/hidden` (which
is expected). So inverting then hides these corner verts, hence the
small region of face sets is visible afterwards.
This could be avoided if `.hide_poly` attribute is used for changing the
visibility.

Pull Request: https://projects.blender.org/blender/blender/pulls/120160
2024-04-09 12:50:49 +02:00
Falk David
7ce0b625cb BLI: IndexMask: Add binary set operations
The `IndexMask` class already had a static function `from_union`.
This adds two new functions `from_difference` and `from_intersection`
as well as tests for each of them.

It also uses `from_intersection` in two grease pencil utility functions.

Pull Request: https://projects.blender.org/blender/blender/pulls/120419
2024-04-09 12:08:14 +02:00
Christoph Lendenfeld
8a79212031 Anim: thread remake_graph_transdata
On animations with high key counts, `remake_graph_transdata`
takes most of the compute time when moving keys.
This patch threads the loop over FCurves in that function to speed things up.

Test file with 10.000 keys per F-Curve
| - | Before | After |
| - | - | - |
| Moving 1 key of each FCurve |  ~2200ms | ~285ms |
| Moving a single key | ~0.70ms | ~0.72ms |

As demonstrated in the measurements, this speeds up the
case of modifying a lot of data, while not impacting the case
of modifying very little data.
The measurements were taken on an 8c/16t CPU.
The higher the thread count, the better the performance gain.

Measurements of `remake_graph_transdata` using the following test file.
https://download.blender.org/ftp/sybren/animation-rigging/heavy_mocap_test.blend

Pull Request: https://projects.blender.org/blender/blender/pulls/119497
2024-04-09 11:46:05 +02:00
Christoph Lendenfeld
956d8379a4 Anim: Detailed report if no keyframes have been inserted
With this PR, when pressing `I` in the viewport and the code
is unable to insert **ANY** keyframes, the user will be presented
with a single message detailing exactly why it has failed.

This PR promotes the functionality introduced in
#117449 into the header file so it can be used elsewhere.

The `CombinedKeyingResult` class is returned
from `insert_key_action` and `insert_key_rna`, and
used to produce a single report from the operator if it
failed to insert any keyframes.

In order to easily create a report from a `CombinedKeyingResult`
the function `generate_keyframe_reports_from_result`
has been moved into the class as `generate_reports`.

In addition to that the `UNABLE_TO_INSERT_TO_NLA_STACK` result
has been added. This notifies the user if keyframe insertion is not
possible due to NLA stack settings.

Pull Request: https://projects.blender.org/blender/blender/pulls/119201
2024-04-09 09:39:13 +02:00
Campbell Barton
38e4e9c68b Fix potential null pointer dereference from the RenderView::imbuf
This member is checked for null elsewhere, account for a null imbuf
when accessing pixels too.
2024-04-09 14:07:17 +10:00
Campbell Barton
6776d68f5e Cleanup: avoid shadowing variables 2024-04-09 14:07:17 +10:00