Commit Graph

120055 Commits

Author SHA1 Message Date
Sean Kim
fbc8ef56ef Fix #127557: Polyline gesture creates extra point
This commit adds a bool to signal the user's intent so that dependent
code can determine the number of points the gesture should have.

Pull Request: https://projects.blender.org/blender/blender/pulls/127827
2024-09-19 21:22:42 +02:00
Hans Goudey
43e4f93ca3 Cleanup: Use index mask utility function for setting bits 2024-09-19 15:16:58 -04:00
Hans Goudey
c2dd238ba1 Refactor: Sculpt: Use static constructors for PBVH build 2024-09-19 15:14:35 -04:00
Hans Goudey
c8ed2b695a Cleanup: Formatting 2024-09-19 14:54:25 -04:00
Harley Acheson
b5fc1683fd UI: Use WM_CURSOR_EDIT For Corner Hover Cursor with Docking
Prior behavior when hovering over the corner action zones the mouse
cursor would change to WM_CURSOR_EDIT (like a plus sign). With docking
that is WM_CURSOR_HAND, but on other platforms it is WM_CURSOR_MOVE.
Unfortunately on some platforms WM_CURSOR_MOVE does not show a
different cursor from default so there isn't an change when hovering
the corner.  This PR changes this back to WM_CURSOR_EDIT for non-Mac
platforms.

Pull Request: https://projects.blender.org/blender/blender/pulls/127878
2024-09-19 20:22:13 +02:00
Hans Goudey
598c2a1032 Mesh: Add version of set custom normals functions for normalized values
Followup to 1939eb03a7.
The values are expected to already be normalized in these cases.
2024-09-19 14:18:08 -04:00
notrudyyy
1939eb03a7 Refactor: Mesh: Normalize input normals in set custom normals
To reduce code duplication in importers, modifies the C++
set_custom_normals API functions to normalize the input normals.

Reverts !124336, !124267, and !124261 as the normalization now
occurs in the API call.

Resolves #124358.

Pull Request: https://projects.blender.org/blender/blender/pulls/127814
2024-09-19 20:12:40 +02:00
Jacques Lucke
69f9366911 Fix #127045: regression when importing assets from the asset browser
The behavior was unintentionally changed in 2858c3b287. This patch brings back
the old behavior when dragging objects/collections from the asset browser into
the 3d view, while still keeping the loose-data-instantiation separate from the
core import code.

The `view3d_ob_drop_copy_external_asset` and `view3d_collection_drop_copy_external_asset`
functions are turned to their old state before the refactor.

Pull Request: https://projects.blender.org/blender/blender/pulls/127452
2024-09-19 18:43:52 +02:00
Philipp Oeser
f9ebc493ee Fix #127836: Cloth Pinch brush regression in behavior
Caused by c06e2ccde7

In said commit, a `mul_v3_v3fl` was turned into a subtraction? Seems
wrong, turning this back to multiply seems to give the previous
behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/127848
2024-09-19 18:34:51 +02:00
Aras Pranckevicius
f0de61c19e Cleanup: early outs in IMB_colormanagement functions on error conditions
Suggested by Sergey in another PR:
https://projects.blender.org/blender/blender/pulls/127467#issuecomment-1297753
2024-09-19 19:26:59 +03:00
Aras Pranckevicius
67f0358a0a VSE: Optimize the Tonemap modifier
VSE tonemap is 12-15 times faster.

1) multi-threaded image luminance calculation,
2) avoid calling into OpenColorIO per-pixel, instead do that in
   larger batches,
3) for float images (which are primary target for tonemapping),
   do not do "to linear space" conversion twice.

Applying tonemap on 4K resolution EXR image, on Ryzen 5950X (Win10/VS2022):

- R/D Photoreceptor mode: 405 -> 31 ms
- Rh Simple mode: 388 -> 23 ms

Pull Request: https://projects.blender.org/blender/blender/pulls/127467
2024-09-19 18:14:49 +02:00
Jacques Lucke
08b29ac143 Refactor: Core: add getter functions for data-block name
This adds a new `BKE_id_name` function. It should be used in places where we
currently do something like `id.name + 2`.

This patch just adds the function and uses them in a small subset of possible
cases. Given that there are >700 cases that need to be replaced, I'd rather to
that in chunks instead of all at once.

Pull Request: https://projects.blender.org/blender/blender/pulls/127410
2024-09-19 18:13:47 +02:00
Falk David
1449b943df Fix #127869: Crash when using pick selection in edit mode
The issue was that `retrieve_editable_drawings_grouped_per_frame`
returned garbage memory, leading to a crash a bit further.

The fix adds a nullptr check to make sure the `current_drawing` exists
and can be safely dereferenced.
2024-09-19 17:35:22 +02:00
Hans Goudey
9e920bc95b Refactor: Sculpt: Add scene argument to undo step creation functions
This is necessary for using the 3D cursor instead of the sculpt pivot (#118250).
It's committed separately from #127863 to make that diff smaller.
2024-09-19 11:28:38 -04:00
Sybren A. Stüvel
fe68190923 Anim: fix group name check in Action constraint
Action constraints on an Object will pass a `nullptr` as group name to
another function, which didn't handle this properly.

Pull Request: https://projects.blender.org/blender/blender/pulls/127865
2024-09-19 17:25:52 +02:00
Sybren A. Stüvel
6ebe7a3985 Anim: don't evaluate the Action constraint if it has no Action
Skip the evaluation of the Action constraint when no Action is set.

Before, the constraint would run an entire animation data evaluation
cycle on a fake object, with the given (but NULL) Action. Now it's just
skipped.
2024-09-19 17:25:51 +02:00
Lalit Shankar Chowdhury
6d8d21812b Fix #126983: custom nodes and groups icon missing
Fix regression caused by commit b120440f7c.

Pull Request: https://projects.blender.org/blender/blender/pulls/127263
2024-09-19 17:05:21 +02:00
Jonas Holzman
9453ff6995 macOS: Splash Screen notice to about reduced performance on Rosetta
Implements a simple splash screen notice displayed if an x86/Intel macOS
Blender build is ran on an Apple Silicon Mac to warn against reduced
performance.

On the technical side of things, this adds a function that detects if
the current process is currently running through Rosetta using `sysctl`.
Implementation wise, I tried to keep this function contained in a single
conditional preprocessor macro block in the same file for simplicity.

Co-authored-by: Harley Acheson <harley.acheson@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/124382
2024-09-19 16:38:08 +02:00
Nathan Vegdahl
02d0c258d9 Anim: define RNA subtypes of ActionStrip, and refine to those types
This is a follow up to #126559. In that PR I temporarily removed the
strip subtypes from RNA because I didn't have the brain space to tackle
updating that at the same time.

This PR restores the strip subtypes in RNA, even though the strip
themselves don't exist as separate C++ types anymore. Now the RNA type
that we present the strip as depends on the type of strip data the strip
references.

Note that currently there is only one subtype: the keyframe strip.

Pull Request: https://projects.blender.org/blender/blender/pulls/127859
2024-09-19 16:31:06 +02:00
casey bianco-davis
421d6c55ae GPv3: Implement the set_origin operator.
Add support the "Set Origin" operator for Grease Pencil objects.
Unlike GPv2, this will update radius properly.

Pull Request: https://projects.blender.org/blender/blender/pulls/127543
2024-09-19 15:27:29 +02:00
Hans Goudey
f82af7fa19 Cleanup: Sculpt: Remove unused PBVHVertRef function
Part of #118145.
2024-09-19 09:09:42 -04:00
Sybren A. Stüvel
3fcd153d89 Anim: fix unit test when built without experimental features
The `ActionQueryTest` unit test was unconditionally creating a layered
Action, which fails the test when Blender was built without experimental
features.

Pull Request: https://projects.blender.org/blender/blender/pulls/127840
2024-09-19 14:47:59 +02:00
Sybren A. Stüvel
823ee1ac92 Anim: add F-Curve getter functions that work with legacy & layered Actions
Add some F-Curve getter functions that work in all these situations:

- Built without experimental features.
- Built with experimental features, and called with legacy Action.
- Built with experimental features, and called with layered Action.

No functional changes, just useful tools for migrating to the new
Actions API.

Ref: #120406

Pull Request: https://projects.blender.org/blender/blender/pulls/127841
2024-09-19 14:46:25 +02:00
Casey Bianco-Davis
929f17ab2b GPv3: Add reset_uvsoperator
This implements `GPENCIL_OT_reset_transform_fill` for GPv3 and
renames it to `GREASE_PENCIL_OT_reset_uvs`

Pull Request: https://projects.blender.org/blender/blender/pulls/126217
2024-09-19 14:19:34 +02:00
Casey Bianco-Davis
2a4b298802 GPv3: Implement view_selected for edit mode
This adds `view_selected` (i.e. `NUMPAD_PERIOD`) when in edit mode of a
grease pencil object.

Pull Request: https://projects.blender.org/blender/blender/pulls/126448
2024-09-19 14:18:03 +02:00
Falk David
bdb4233279 GPv3: Rename property name of noise modifier
The `factor` property that controls the noise on the positions
was named `Offset Factor` in RNA but this name is overriden
in the modifier to `Position`.

When this property is e.g. keyed the RNA UI name is used
which can be very confusing.

This renames the RNA UI name to "Position Factor" to avoid
this confusion.
2024-09-19 14:14:50 +02:00
Clément Foucault
c92514f1e7 Fix #124567: No Normals pass when combining two shader to RGB
The unlit packing could write to the (non-existing) 4th
closure bin inside the gbuffer header leading to no
combined pass shader being invoked for these specific
(complex) materials.

Making sure the unlit workaround writes to bin 0 fixes the
issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/127811
2024-09-19 14:11:20 +02:00
Clément Foucault
02cf5f5f0f Fix #127774: Flat Object matrix leads to incorrect culling
Object with degenerate transform matrix can lead to flat
bounds on GPU. This in turn lead to NaN intersection planes
inside `IsectBox`.

Compute (pseudo) size of matrix and bypass culling is any
axis is too small.

The other part of the patch makes sure that there is a
distinction between disabled culling and invalid
bounding boxes.

Pull Request: https://projects.blender.org/blender/blender/pulls/127807
2024-09-19 14:09:57 +02:00
Sean Kim
4291ab855c GPv3: Add Reproject operator
This commit adds the `Reproject Strokes` operator in the
`Grease Pencil` > `Cleanup` menu in edit mode.

All similar operator settings have been ported over from GPv2.

Pull Request: https://projects.blender.org/blender/blender/pulls/127735
2024-09-19 14:06:10 +02:00
Sybren A. Stüvel
38e15412dd Fix #127755: 4.3 regression: Some rigged meshes do not load properly
Revert part of 9530852347 as that did not
take into account that the `max` property may actually be smaller than
the `min` property.

I've also taken the liberty to document this fact in some comments.

The fix for the crash when `min == max` is still in place.
2024-09-19 13:57:30 +02:00
Nathan Vegdahl
91fd95bad4 Cleanup: make strip_keyframe_data_append() doc comment accurate 2024-09-19 13:56:19 +02:00
Jeroen Bakker
214a47f15c Vulkan: Make Unused Attachments Optional
Windows/Intel and Apple drivers do not support dynamic
rendering unused attachments. Due to mistakes we made
this extension partly optional. Eg. the extension was
optional, but its settings were not.

This PR makes the extension fully optional. However
without the extension some drivers might make incorrect
assumptions. This should be solved when it is more clear
why some drivers are still crashing when using dynamic
rendering.

Pull Request: https://projects.blender.org/blender/blender/pulls/127839
2024-09-19 13:03:50 +02:00
Pratik Borhade
ba6126dbbd Fix #127604: Skip unlink operator for linked materials
Materials of a linked object can be unlinked from outliner id operation
which should not be possible. Add an extra check to avoid this.

Pull Request: https://projects.blender.org/blender/blender/pulls/127686
2024-09-19 12:54:23 +02:00
Pratik Borhade
912c6d9a3c Fix #127620: Disable smooth operator for linked objects
Shade flat/smooth operators are callable when linked but greyed out if
objects are overridden. Disable these operators in UI for linked objects.

Pull Request: https://projects.blender.org/blender/blender/pulls/127681
2024-09-19 12:53:22 +02:00
Jonas Holzman
b427253a4d Obj-C Refactor: General Code Style cleanups
As part of a more general Objective-C GHOST refactor and in an effort to
modernize the macOS backend for further works, this commit cleans up the
codestyle of Objective-C files. Based off the Blender C/C++ style guide,
in addition to some Objective-C specific style changes.

Changes:
- `const` correctness, use nullptr, initializer list for simple struct
- Reduced variable scope for simple functions, removed unused variables
- Use braces for conditional statements, no else after return
- Annotate inheritted function of GHOST Cocoa classes with override and
  use `= default` to define trivial constructors
- Use #import instead of #include for Objective-C headers
    This is only for correctness. As the Objective-C #import directive
    is really just an #include with an implicit #pragma once.
- Use proper C-style comments instead of #pragma mark
    #pragma mark is an XCode feature to mark code chapters, to follow
    the Blender codestyle, and make the Objective-C code more editor
    agnostic, these were replaced with multi-line C-style comments.

Ref #126772

Pull Request: https://projects.blender.org/blender/blender/pulls/126770
2024-09-19 11:37:52 +02:00
YimingWu
11bf2b9a62 Fix #127539: Prevent multi-object editing in GPv3
Multi-object editing is not supported in GPv3 right now,
do not allow multiple GPv3 objects to go into edit mode
at the same time.

Pull Request: https://projects.blender.org/blender/blender/pulls/127796
2024-09-19 11:22:15 +02:00
Lukas Tönne
3a1ab067f2 Fix #127342: Support Curve domain when selecting by vertex group
This requires writing selection attributes to a different domain than
the Point domain.

Note that for assigning/removing from vgroups the `adapt_domain`
function is used implicitly by always looking up attributes from the
Point domain: ".selection" may be stored on Curves and will
automatically be adapted to points. For select-by-vgroup `adapt_domain`
cannot be used because the selection has to be "greedy" (one point
selects the whole curve).

Pull Request: https://projects.blender.org/blender/blender/pulls/127799
2024-09-19 10:59:55 +02:00
Bastien Montagne
5e4c76accc Fix warnings when building Blender with mold linker on linux.
Remove the three problematic entries:
- `aligned_free` is not a 'real' function and does not need to be
  handled here. There is no symetry with the `aligned_malloc` symbol
  here.
- `__end` and `_bss_start` seem to have been mis-typed from the
  beginning (actual symbols seem to be `_end` and `__bss_start`).
  Regardless, neither `gold` nor `mold` seem to take these directives
  from the LD version script into account (result is the same for them
  when removed for the `.map` file), so removing them.

Pull Request: https://projects.blender.org/blender/blender/pulls/127761
2024-09-19 10:52:45 +02:00
Campbell Barton
3a555b60f7 Fix crash making objects single user
Add BKE_view_layer_synced_ensure to the FOREACH_OBJECT_FLAG_BEGIN
macro. This macro was only used by the single-user operator.
2024-09-19 17:22:07 +10:00
Campbell Barton
9e68066a4d Logging: suppress "Info" prints when calling bpy.ops.* in quiet mode 2024-09-19 14:49:05 +10:00
Campbell Barton
67638a72e3 Logging: suppress BKE_bpath summary reports for non-operator callers
Saving for the first time or using save-as printed a summary, e.g.

`Total files 0 | Changed 0 | Failed 0`

When path operations were added it was only accessed from the UI,
where reporting a summary makes sense. Having the summary reported when
path manipulation is done as part of another action isn't useful.
It's also not clear what the summary relates to.

Now the summary is only shown in operator reports.
2024-09-19 14:49:03 +10:00
Campbell Barton
42e94192e5 Logging: suppress render prints in quiet mode 2024-09-19 14:49:02 +10:00
Campbell Barton
b63aa7f713 Cleanup: use bool return value for image write functions 2024-09-19 13:08:14 +10:00
Sean Kim
6a68a924fd Refactor: Sculpt: Remove PBVHVertRef usage in sculpt_expand.cc
Part of #118145

Also removes other now-unused functions & macros.

Pull Request: https://projects.blender.org/blender/blender/pulls/127821
2024-09-19 04:52:01 +02:00
Sean Kim
fa1a3fbcce Refactor: Sculpt: Remove PBVHVertRef usage for PaintCursorContext
Part of #118145.

Pull Request: https://projects.blender.org/blender/blender/pulls/127823
2024-09-19 04:49:34 +02:00
Harley Acheson
23d0034a1b Fix: Update Window Positions on File Load
When we create a new window at run time, we request that it be placed
at a specific size and location, but afterward we ask the OS for
details about where it was actually made and then update the window's
size and position with the correct information. Unfortunately when we
open a window when loading a blend file we do most of this, but only
update the size from the OS, not the position. There are times a window
will need to be placed somewhere different than we request and so the
window posx and posy will be incorrect until we move or resize it. This
is more likely to happen on Macs, but is possible on any platform.

Pull Request: https://projects.blender.org/blender/blender/pulls/127819
2024-09-19 01:41:58 +02:00
Jonas Holzman
aa5385f648 Fix: Interactive Docking modal operator re-run glitch
Docking can close windows during its operation. If the current window
does not match before and after an operator has run our event handling
code can assume that a new blend file has been loaded and will rerun
the operator. This PR avoid this problem by just not starting if the
event initiating it is of type WINDEACTIVATE. There might be a later
fix that addresses the underlying issue, but this is simple, small, and
harmless.

Pull Request: https://projects.blender.org/blender/blender/pulls/126379
2024-09-19 00:47:37 +02:00
Jesse Yurkovich
6385296e56 Fix #127651: Properly load generated UDIM image tiles in Cycles
Since their introduction, generated UDIM images/tiles would not be
loaded in Cycles. In relative recent history 72ab6faf5d added the
ability to track which tiles were still marked as being "generated" and
unsaved. However, that check was never implemented into the Cycles code.

With this PR, these two additional scenarios should now work:
- Properly load pixels if all tiles are generated
- Properly load pixels if a UDIM image has been loaded from a file and
  new generated tiles have been added but not saved yet etc.

Pull Request: https://projects.blender.org/blender/blender/pulls/127673
2024-09-19 00:40:30 +02:00
Sean Kim
3ca97f8c5c Fix #127671: Multiplane scrape causes parts of mesh to disappear
Root cause was introduced in 347ec1acd7, the `IndexMask` was not being
iterated over correctly

Pull Request: https://projects.blender.org/blender/blender/pulls/127816
2024-09-18 23:36:58 +02:00
Sean Kim
00aedc065b Fix: Mask from Cavity did not call .finish after applying mask
Pull Request: https://projects.blender.org/blender/blender/pulls/127815
2024-09-18 23:13:07 +02:00