Commit Graph

126444 Commits

Author SHA1 Message Date
Jacques Lucke
830fb684c3 Fix: failing mesh boolean test in debug build due to unnormalized normal
This was accidentally changed in f557222a7b.
2023-07-29 12:03:07 +02:00
Campbell Barton
916f6a7bf3 UI: add weight paint gradient menu items for discoverability 2023-07-29 16:33:14 +10:00
Campbell Barton
69e290d2fe Cleanup: code comments
Note that the previous commit [0] added a workaround for MMB-Emulation,
which should have been a separate commit.
(Ctrl-Shift-LMB for weight paint selection).
Extended the code comment for this.

[0]: cfffd813c1
2023-07-29 16:20:03 +10:00
Campbell Barton
cfffd813c1 Cleanup: use typed enum for UI_ITEM_* flags
Using an int lead to confusion with other flags often used with buttons.
For e.g. these flags could be easily confused with uiItem::flag.
2023-07-29 15:32:45 +10:00
Campbell Barton
acbf16d91a Cleanup: correct invalid flag types
- wmOperatorCallContext was used to store UI_ITEM_* flags.
- Collada export use passed invalid UI_ITEM_* flag as an argument.
2023-07-29 14:52:47 +10:00
Campbell Barton
98f848dc4b Cleanup: use typed flag for uiItem::flag 2023-07-29 14:48:13 +10:00
Campbell Barton
ed01e16aa6 Cleanup: quiet uninitialized warnings 2023-07-29 13:47:57 +10:00
Campbell Barton
42713bf0f8 Cleanup: quiet uninitialized warnings for finder root directories 2023-07-29 13:47:55 +10:00
Campbell Barton
2bc89982dc Cleanup: remove unused variable 2023-07-29 13:47:53 +10:00
Germano Cavalcante
22206a1592 Fix #110571: Property option 'TEXTEDIT_UPDATE' no longer updates
The `ENUM_OPERATORS` utility was used in `PropertyFlag` in d154ebfa83.

In that commit, it was set with a maximum value lower than
`PROP_TEXTEDIT_UPDATE`.

Consequently, when `bpy_props.c` was converted to C++ in 6fcecb7e46,
the cast to `PropertyFlag` caused the value of `PROP_TEXTEDIT_UPDATE`
to be cleared.

The solution is to set the maximum value to `PROP_TEXTEDIT_UPDATE`
instead of `PROP_NO_DEG_UPDATE`.
2023-07-28 17:51:54 -03:00
Ray Molenkamp
6228338d74 deps_builder: fix zlib homepage
was accidentally committed as a comment
2023-07-28 13:17:04 -06:00
Jacques Lucke
860196d5a1 Geometry Nodes: extract bake items from simulation baking
The goal is to reuse the same bake items for simulation and normal baking (#110137).
Previously, the bake data was tied to a simulation state which made it harder to reuse.

Now the code for the following things can be reused easily:
- Convert geometry node socket values into bake items and back.
- Serialize and deserialize bake items.

Pull Request: https://projects.blender.org/blender/blender/pulls/110577
2023-07-28 18:30:32 +02:00
Brecht Van Lommel
635c2591ff Fix #109683: Cycles AOV render without surface output missing attributes 2023-07-28 17:35:50 +02:00
Bastien Montagne
ef26e5d313 Cleanup: Rename 'override' variables and parameters to 'liboverride'.
`override` is a reserved keyword in C++.

Pull Request: https://projects.blender.org/blender/blender/pulls/110534
2023-07-28 16:37:06 +02:00
Bastien Montagne
ded695bc73 LibOverride/RNA Diffing refactor.
Use a context structure for both parameters and results of the rna
diffing functions, instead of 10+ individual parameters.

Also switch to C++ features like `std::string` and `std::optional`
instead of handling manually buffers and allocated C-style strings.

This commit also makes some minor cleanups, add some documentation, and
removes a few small parts of code that have been detected as
redundant/useless.

No behavioral nor performance changes are expected with this commit.
2023-07-28 16:36:31 +02:00
Falk David
187545109a Cleanup: GPv3 drawings API
This cleans up the API a bit to make things more readable.
No functional changes.
2023-07-28 16:32:42 +02:00
Amelie Fondevilla
f7130d98c4 GPv3: Select frames by column
Implementation of column-based operators : "Columns on selected keys", "Column on current frame", and "Columns on selected markers" for grease pencil frames in the dopesheet.

Pull Request: https://projects.blender.org/blender/blender/pulls/110523
2023-07-28 16:18:40 +02:00
Julian Eisel
088d7a0bdd UI: Activate view item on right click on nested button too
No user visible change expected.

Right-clicking a view item is supposed to activate it and display the
context menu. However, nested buttons could "swallow" the right click
event. Ensure the view item is still activated.
2023-07-28 15:31:52 +02:00
Julian Eisel
1fe45cef91 Fix broking popover refreshing
Mistake in 167c5c6b53, basically making the commit have no effect.
2023-07-28 15:25:48 +02:00
Christoph Lendenfeld
9cd60da3cb Refactor: extract code from dopesheet draw function
No functional changes

Extracting code into two new functions in the dopesheet draw code
to improve readability and reduce variable scopes.
in addition to the extraction two if checks were negated to reduce indentation.

the diff makes it look a bit convoluted, but it's just copy paste into functions

Pull Request: https://projects.blender.org/blender/blender/pulls/110290
2023-07-28 15:14:56 +02:00
Julian Eisel
3053cba6e9 Fix glitch when unhiding fixed size regions with region resizing
Some regions have a fixed size or the size is determined by the layout
somehow, and so the regions should allow hiding/unhiding via the resize
operator, but the size shouldn't be modified. When the region was just
unhidden, it would still use a size based on the mouse position for one
mouse move event. Ensure the size isn't modified, as requested.
2023-07-28 14:36:02 +02:00
Julian Eisel
4319c211dc UI: Support layout based region resizing that still allows user resizing
No user visible changes expected.

This is needed for the asset shelf (#104831), so that the user can
resize the asset shelf region, but it's ensured to always be snapped to
a multiple of the row height (which can change over redraws).

Before this, `RGN_FLAG_DYNAMIC_SIZE` would have to be set so that
regions can control their own size in the `ARegionType::layout()`
callback. But this would also disable resizing the region by the user.
Tagging regions as being dynamically sized and disabling user resizing
are now two separate options/flags.

Included changes:
- Rename `RGN_FLAG_PREFSIZE_OR_HIDDEN` to `RGN_FLAG_NO_USER_RESIZE` and
  make that generally disable user resizing like `RGN_FLAG_DYNAMIC_SIZE`
  used to, so that it can be used for more than just the properties
  editor tabs region.
- Ensure regions that relied on the previous `RGN_FLAG_DYNAMIC_SIZE`
  behavior that disallowed user resizing have the
  `RGN_FLAG_NO_USER_RESIZE` flag set too now.
- Versioning to ensure the previous point for old files.
- Update comments.
2023-07-28 14:36:02 +02:00
Falk David
20b1077097 GPv3: Initial modifier support
This commit adds modifier support for Grease Pencil 3.
The `BKE_grease_pencil_data_update` function evaluates the modifiers by
first creating a `GeometrySet` from the grease pencil data,
then evaluating the modifiers, and finally reading the
resulting `GreasePencilComponent` component and assigning
the evaluated object data.

Pull Request: https://projects.blender.org/blender/blender/pulls/110500
2023-07-28 14:25:38 +02:00
Jacques Lucke
38294bcbe7 Fix #110543: black faces on mesh extrude
That was a mistake in 932332ad6e.
2023-07-28 13:50:02 +02:00
Jacques Lucke
d1aeb1c3b4 Cleanup: add static assert for detect bad usage of MEM_SAFE_FREE
Without this, there is not compilation error when doing e.g.:
```
int a;
MEM_SAFE_FREE(a);
```
2023-07-28 13:50:02 +02:00
Hans Goudey
a632f1ddfd Sculpt: Remove dynamic topology "Smooth Shading" option
Dynamic topology drawing can now use the smooth status saved in each
edge. Because of that, the "Smooth Shading" draw option is unnecessary
and just adds confusion because of inconsistency between dynamic
topology drawing and other modes.

Fixes #109191

Pull Request: https://projects.blender.org/blender/blender/pulls/110548
2023-07-28 13:44:01 +02:00
Andras-Borsanyi
f418e4f648 Walk Navigation: Controls to adjust jump height interactively
In Walk Navigation mode with gravity enabled, the jump height is
often inappropriate for the scene that you are viewing. This is a small
feature that lets you change the jump height in modal walk navigation
as you go, i.e. if there are varying elevation changes across the scene.

Pressing '.' increases and ',' decreases the jump height (because these keys
are the same for most layouts).

Pull Request: https://projects.blender.org/blender/blender/pulls/109827
2023-07-28 13:43:35 +02:00
Campbell Barton
fb54d3f865 Keymap: Use Alt-LMB for selection in vertex/weight paint modes
Use Alt-LMB for selecting in vertex/weight paint modes for vertex, face
& pose bone selection - replacing Ctrl which was previously used for
selecting. This is needed so Ctrl & Shift can be consistent between all
paint modes.

Loop selection is available With Alt-LMB but only when selection tools
are active (with the LMB select key-map). They're always available with
the RMB select key-map.

This also resolves a conflict where box & lasso select tools couldn't
be used to de-select (via Ctrl) because the Ctrl-LMB was also clearing
the selection.

Part of #105298 design task.
2023-07-28 20:54:53 +10:00
Sergey Sharybin
f839c31f6c Fix Blender crash on startup on macOS
The issue was caused by recent C++ transition: the header file is
shared between CPU and GPU. The Metal defines __cplusplus so it is
not enough to check for it to use C linking as it is not a valid
syntax for shaders.

Pull Request: https://projects.blender.org/blender/blender/pulls/110570
2023-07-28 12:42:15 +02:00
Julian Eisel
44c54eda6f Cleanup: Apply clang-format for recent Outliner changes 2023-07-28 12:36:32 +02:00
Julian Eisel
d1e590eafa Refactor: Avoid evil context storage in drag data for asset import
Context is needed to import and instantiate assets correctly. Previously
the context was stored as "evil" pointer in the drag data. Since
77794b1a7b, context is passed to the dragging callbacks doing the asset
import, so the context doesn't need to be stored that way anymore and
can simply be passed to the import function.
2023-07-28 12:20:27 +02:00
Almaz-Shinbay
1f722a6d01 Outliner: Port grease pencil effect elements to new tree-element code design
No user visible changes expected.

Part of #96713, continuation of work started in 249e4df110 and 2e221de4ce.
Refer to these for a motivation and design overview.

Adds new classes for grease pencil effect elements.

Pull Request: https://projects.blender.org/blender/blender/pulls/110551
2023-07-28 11:26:09 +02:00
Julien Kaspar
827918c925 Keymap: add/update selection mode shortcuts
Selection modes are typically assigned to the number keys.
These are some updates for more consistency among painting and grease
pencil modes:

- Paint Mask = `M` changed to `1`.
- Vertex Selection = `V` changed to `2`.
- GP: Point Selection = `1`.
- GP: Stroke Selection = `2`.
- GP: Segment Selection = `3`.

Design task: #105298

Ref !108714.
2023-07-28 18:26:57 +10:00
Guillermo
82c178a574 Fix #110556, #110546: wrong variable initialization
Fixes attempt to access an overridden variable value.

Pull Request: https://projects.blender.org/blender/blender/pulls/110557
2023-07-28 09:15:31 +02:00
Campbell Barton
88902a273e UI: add menu items for sample weight/color
These were only available as shortcuts without any menu item.
2023-07-28 16:27:24 +10:00
Campbell Barton
09c66631a6 Refactor: use object.vertex_group_set_active for group sample operator
This change is needed for PAINT_OT_weight_sample_group to be accessed
from a menu.

Otherwise using the OPTYPE_DEPENDS_ON_CURSOR flag causes both the
initial activation and the selected vertex group to prompt the user
to select a region.
2023-07-28 16:09:29 +10:00
Hans Goudey
795ca93de5 Cleanup: Format
Somehow this snuck through, sorry for the noise.
2023-07-27 23:47:26 -04:00
Hans Goudey
bed79d9ad1 Sculpt: Parallelize grid bounds calculations for creating PBVH
Similar to 79115c5c56, but for multires sculpting. Improves
the PBVH build time for a 16 million vert multires sculpt by about 100ms
(from 470ms to 370ms). That itself is just a small portion of the time
spent entering sculpt mode though.
2023-07-27 23:38:28 -04:00
Hans Goudey
25917f0165 Sculpt: Reduce overhead of PBVH draw with blender::FunctionRef
At least on GCC on Linux, it appears std::function has noticeable
overhead compared to blender::FunctionRef. That makes some
sense, as the latter generally handles less, and the performance
difference is mentioned in the function ref header as well.

To test performance, I measured the timing of the first data
upload (`BKE_pbvh_draw_cb`) after entering sculpt mode. For
meshes, I observed a 30% improvement, from 1.7s to 1.3s.
For multires, I observed a change from 290ms to 263ms.
The change should apply to regular draw updates while sculpting,
but that's harder to measure.

This is also cleaner semantically, since the callbacks aren't meant
to own any data, they are just lambdas that capture by reference.
2023-07-27 23:38:28 -04:00
Hans Goudey
1c9e32cab1 Cleanup: Sculpt: Use r_ prefix for return argument 2023-07-27 23:38:28 -04:00
Hans Goudey
82f67a1b58 Cleanup: Use const reference for PBVH draw arguments 2023-07-27 23:38:28 -04:00
Julien Kaspar
6de6d7267f Keymap: improve consistency for paint modes
Various changes to common keymap entries to:

- Sync up very common shortcuts between all Draw, Paint & Sculpt modes
- Avoid shortcut conflicts and remap blocking shortcuts
- Add missing common shortcuts
- Make some important shortcuts more accessible

Some standards this is setting across these modes are:

- Holding `Ctrl` & `Shift` for inverted/smoothing brush strokes
- `X` (+ modifier keys) for Color operations
  (for example flip, sample & fill).
- `Ctrl R` for remeshing
- `I` and `Alt I` for creating and removing keyframes.

- Sample Color = `S` -> `Shift X`
- Set Vertex Color = `Shift K` -> `Ctrl X`
- Stroke Method Menu = `E` -> `Alt E`

New
- Paint Smooth = `Shift Left Mouse`

- Sample Weight = `Ctrl Left Mouse` -> `Shift X`
- Sample Group = `Shift Left Mouse` -> `Shift Ctrl X`
- Set Weight = `Shift K` -> `Ctrl X`
- Linear Gradient = `Alt Left Mouse` -> `Shift A`
- Radial Gradient = `Ctrl Alt Left Mouse` -> `Shift Alt A`
- Stroke Method Menu = `E` -> `Alt E`

New
- Invert Paint = `Ctrl Left Mouse`
- Smooth Paint = `Shift Left Mouse`

- Sample Color = `S` -> `Shift X`

New
- Smooth Paint = `Shift Left Mouse`

- Face Sets Visibility = `H` -> `Shift H`
- Face Sets Visibility = `Shift H` -> `H`
- Face Set Edit Pie = `W` -> `Alt W`
- Sample Color = `S` -> `Shift X`
- Context Enum Menu = `E` -> `Alt E`
- Subdivision Set (Level -1 relative) = `Pg Down` -> `Alt 1`
- Subdivision Set (Level 1 relative) = `Pg Up` -> `Alt 2`

New
- `paint.brush_colors_flip` = `X`
- `sculpt.detail_flood_fill` = `Ctrl R`
- `sculpt.set_pivot_position` (Mode=Surface) = `Shift Right Mouse`

New
- `brush.scale_size` (scalar=0.9) = `[`.
- `brush.scale_size` (scalar=1.1) = `]`.

Removed
- Delete All Active Frames = `Shift X`

New
- `wm.call_menu (GPENCIL_MT_gpencil_draw_delete)` = `Alt I`

- Delete = `X` -> `Alt I`

New
- `wm.call_menu (GPENCIL_MT_gpencil_draw_delete)` = `Alt I`

- Sample Weight = `Ctrl Left Mouse` -> `Shift X`

New
- `wm.call_menu (GPENCIL_MT_gpencil_draw_delete)` = `Alt I`

New
- `gpencil.tint_flip` = `X`
- `wm.call_menu (GPENCIL_MT_gpencil_draw_delete)` = `Alt I`

Ref !108791.
2023-07-28 12:31:52 +10:00
Campbell Barton
93ac697091 Cleanup: remove redundant transform entries in the "Weight Paint" keymap
The pose keymap already handles these actions.
2023-07-28 12:18:48 +10:00
Campbell Barton
a478a4cd92 Fix crash drawing armatures in edit-mode
ArmatureDrawContext::bcolor wasn't initialized causing a crash.
Resolve by initialing the whole struct to zero.
2023-07-28 11:36:46 +10:00
Campbell Barton
9a37a206cf Cleanup: remove duplicate struct member comments 2023-07-28 10:04:26 +10:00
Campbell Barton
7768c1cc96 Fix crash loading corrupt blend file
Missing NULL check in [0] meant failing to load a blend file crashed
instead of reporting a warning.

[0]: a1d7ec7139.
2023-07-28 09:43:51 +10:00
Campbell Barton
ea8d985db8 Cleanup: various C++ cleanups
- Use C++ headers.
- Use function style cast.
- Use boolean literals.
- Remove redundant struct, void.
- Remove redundant parenthesis.
2023-07-28 09:38:07 +10:00
Campbell Barton
257cf12439 Cleanup: quiet compiler warnings 2023-07-28 09:38:05 +10:00
Campbell Barton
e4437f15f3 Cleanup: format 2023-07-28 09:33:42 +10:00
Hans Goudey
69cf65732a Sculpt: Replace GHash with Map when building PBVH
Reduces the average runtime of building mesh PBVH nodes from 4.2 to
3.3 seconds in a basic test with a 16 million face grid on my hardware.
This is probably mainly because of improved inlining with C++
templates. It also makes the code easier to understand.
2023-07-27 17:47:34 -04:00