Commit Graph

134704 Commits

Author SHA1 Message Date
Campbell Barton a2dae7e4b4 Cleanup: consistent quotes for Python scripts 2024-03-29 10:07:28 +11:00
Sean Kim 6e997cc757 Sculpt: Add Line Hide tool
This PR adds the *Line Hide* tool and the corresponding
`PAINT_OT_hide_show_line_gesture` operator to Sculpt Mode.

*Line Hide* supports common modal functionality including:
* Snapping to angles
* Flipping the selection area
* Moving selection area

Addresses one of the tools in #80390

Pull Request: https://projects.blender.org/blender/blender/pulls/119671
2024-03-29 00:05:25 +01:00
Hans Goudey bf04da96f3 Fix: Missing change in declaration from previous commit 2024-03-28 19:01:32 -04:00
Hans Goudey 82b88f130a Cleanup: Use const for evaluated cage meshes and related data
Also access the evaluated deform mesh with a function rather than
directly from object runtime data. The goal is to make it easier to use
implicit sharing for these meshes and to improve overall const
correctness.
2024-03-28 18:57:57 -04:00
Hans Goudey 510874f7b9 Mesh: Limit threading for copying positions to GPU data
See b99c1abc3a for more information about how using fewer
threads for just copying data can improve performance. In my simple
test file with mesh data re-uploaded every frame, this improved
performance from 23.5 FPS to 25.5 FPS (almost 9%).
2024-03-28 18:37:23 -04:00
Hans Goudey 5ed99e6361 Cleanup: Remove unused MeshRenderData variable 2024-03-28 18:28:35 -04:00
Hans Goudey 931206d3dc Cleanup: Rename mesh face deformed edit position variables
Use standard naming similar to their `Mesh` counterparts.
2024-03-28 18:28:35 -04:00
Hans Goudey 72347f11fe Cleanup: Use float3, Span, Array for vertex positions 2024-03-28 18:28:35 -04:00
Germano Cavalcante 5bdfec8d67 Fix: unhandled empty Optional in 'bounds_min_max()'
Continuation of fcfce8f69f
2024-03-28 18:59:33 -03:00
Hans Goudey 90c53d265b Cleanup: Outliner: Return early, reduce variable scope 2024-03-28 16:40:15 -04:00
Hans Goudey 9132679f1b Fix #119571: Weight paint vertex selection invisible
After bace4c9a29, the vertex position and vertex normal VBOs
are split. The `overlay_paint_point` shader depends on the normals VBO
because the selection is stored in the `.w` component of the vector.
2024-03-28 15:47:34 -04:00
Hans Goudey 684dbba6a1 Fix #119969: Crash rendering in sculpt mode with multires active
SubdvigCCG is null for the evaluated mesh in the render depsgraph
because of the `!for_render` check in `MOD_multires.cc`. But the PBVH
type is still `PBVH_GRIDS`. That's a weird inconsistency that ideally
wouldn't happen, but probably isn't simple to change. The simplest and
most obviously harmless fix is to just check whether the list of PBVH
nodes to update is empty.
2024-03-28 15:11:02 -04:00
Hans Goudey 0b80d5e755 Cleanup: Access sharp_face attribute with attribute API 2024-03-28 14:45:56 -04:00
Jesse Yurkovich b37e825d89 Fix: MSVC ICE in MatBase stream output operator
Recently an internal compiler error has been popping up for folks
stemming from our MatBase matrix `operator<<`.

My guess is that the nested fold-expression (coming from `unroll`) and
the lambda is causing MSVC to become very upset in some instances.

Regardless of the actual cause, using simple for loops results in less
generated code and the use of `unroll` isn't required since these output
operators are mainly for debugging.

Unfortunately I've been unable to reproduce it in simpler contexts to
report it upstream.

Pull Request: https://projects.blender.org/blender/blender/pulls/119982
2024-03-28 19:31:18 +01:00
Hans Goudey a5c5cf473e Fix #119992: Object transform ignored for shrinkwrap and flat shading
the transform was always ignored for face normals since b4b224dc08.
2024-03-28 13:43:20 -04:00
Hans Goudey d5a61a8f55 Fix: Missing early return when asset isn't found
This didn't cause a crash since `resolve_asset_weak_reference_to_full_path`
doesn't actually use the `this` pointer, but it's still quite unsafe.
2024-03-28 13:43:20 -04:00
Hans Goudey a7cdb9e94d Cleanup: Use "this" keyword to access class methods 2024-03-28 13:43:20 -04:00
Hans Goudey f8e8e3ac8c Cleanup: Use utility mixins for AssetRepresentation 2024-03-28 13:43:20 -04:00
Falk David 8b7d5f8587 GPv3: Simplify Modifier
Implements the GPv2 simplify modifier.

Pull Request: https://projects.blender.org/blender/blender/pulls/120018
2024-03-28 18:16:14 +01:00
Sergey Sharybin 598819049e Fix #120007: Crash rendering when using OptiX and Grease Pencil on recent drivers
The issue seems to be caused with the recent NVidia drivers, which will
crash if OptiX context is created prior to the OpenGL context on Linux.
This happens with drivers 545.29.06, 550.54.14, 550.67 and kernel 6.8
on Ubuntu 24.04, and also happens with NVidia driver 550.67 on Gentoo.

While it does seem the issue is likely on the driver side, the timeline
for it being resolved there is unknown. Until then it is possible to
apply workaround on Blender side, which will initialize GPU context
prior to rendering with an external render engine when it is known the
GPU context will be needed later on.

Note this is not a complex fix, because in general it's still possible to
render a frame without and then with grease pencil, in which case OptiX
will still be initialized first. But we don't want to always initialize
OpenGL, and we can't predict future operations.

Pull Request: https://projects.blender.org/blender/blender/pulls/120026
2024-03-28 18:00:30 +01:00
Falk David e3a02b9b02 Fix: GP: Vertex Paint is very slow in heavier files
For some reason, the vertex paint modal operator
was calling `CTX_data_ensure_evaluated_depsgraph` on
every event update. For obvious reasons, this caused
performance to go down drastically in bigger files.
Specifically in one of the Blender Studio files.

The fix uses `CTX_data_depsgraph_pointer` instead to
get the `Depsgraph` pointer, avoiding a full reevaluation
of the scene.
2024-03-28 17:11:16 +01:00
Christoph Lendenfeld fdf75dcf99 Refactor: Remove duplicate function `get_keyframe_values`
No functional changes.

The function `get_keyframe_values` existed twice.
Once in a legacy state, which also did NLA logic.
And also in a new implementation where it only returned keyframe values.

This PR removes the legacy function and moves the NLA logic to a separate function.

Pull Request: https://projects.blender.org/blender/blender/pulls/119798
2024-03-28 17:00:21 +01:00
Brecht Van Lommel 451bf56409 Fix #120015: Weight paint crash with shift to blur 2024-03-28 16:42:21 +01:00
Brecht Van Lommel 0334ce5666 Tests: Update references for EEVEE, Workbench, Storm 2024-03-28 16:29:26 +01:00
Falk David 5a6a9349e0 Revert "GPv3: Simplify modifier"
This reverts commit 279b8b5748.

The PR wasn't accepted.
2024-03-28 15:23:42 +01:00
YimingWu 279b8b5748 GPv3: Simplify modifier
Implements the simplify modifier from GPv2.

Co-authored-by: Falk David <falk@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/118546
2024-03-28 15:18:33 +01:00
Jeroen Bakker 47226f68ef Fix #119800: EEVEE-Next: Planar probe debug display
The planar probe display had artifacts. This PR
fixes them by displaying the world when the planar probe
doesn't contain a reflection on that given pixel.

Pull Request: https://projects.blender.org/blender/blender/pulls/120011
2024-03-28 15:15:09 +01:00
Christoph Lendenfeld 6276dd2f64 Fix #119946: NLA stack decomposition doesn't work with bones
The issue was that the `PointerRNA` passed to `BKE_animsys_get_nla_keyframing_context`
needs to point to an `ID` which wasn't the case when keying bones.
That is because internally the `FCurve` path is used to resolve the property.
This can only work from the `ID` because the `FCurve` path is always stored relative to that.
While the function doesn't fail when the property can't resolve the path, it won't actually do
the remapping when passing it to `BKE_animsys_nla_remap_keyframe_values` later.

Pull Request: https://projects.blender.org/blender/blender/pulls/120008
2024-03-28 15:14:01 +01:00
Germano Cavalcante 7f3be1ddd8 Fix: Remove reference to non-existing "use_snap_uv_grid_absolute"
Also add missing renames from f66cb1e635
2024-03-28 10:08:56 -03:00
Bastien Montagne 71fd693d22 GPv3: Conversion: Add some support for GPData animation itself
Handling animation of GPv3 in itself is relatively straightforward, it's
mainly a matter of duplicating animdata into the new GreasePencil ID.

In case some propoerties need to be remapped, this will be done in a
similar way as e.g. GP object's modifiers animation for Object-level
animation.

The complex and ugly part of this PR is in the need to move animation
from GPdata to Object level for some properties. This PR tackles the
'layer adjustments to modifiers' aspect (i.e. adjustments on tint and
thickness).

Known limitations currently with these GPData to Object animation:
* NLA is not supported (i.e. if an NLA in legacy GP data controls these
  adjustments animations, it won't be converted to Object-level NLA to
  control matching modifiers settings).
* Drivers targets are not handled either, i.e. in case a driver is using
  data from legacy GPdata as input, these will be left as-is (this is
  true for all anim handling currently).
* There is no adjustments of values for animation (e.g. the thickness
  adjustment values would need to be devided by 2000).

Most of these limitations can be addressed at some point, depending on
how critical they are to support. This would have a cost (in time and
code complexity) though.

Pull Request: https://projects.blender.org/blender/blender/pulls/119214
2024-03-28 13:52:21 +01:00
Omar Emara db13fc01ad Compositor: Unify Defocus node between CPU and GPU
This patch unifies the Defocus node between the CPU and GPU compositors.
Both nodes now use a variable sized bokeh kernel which is always odd
sized for a center pixel guarantee. Further the CPU implementation now
properly handles half pixel offsets when doing interpolation, and always
sets the threshold to zero similar to the GPU implementation.
2024-03-28 14:35:13 +02:00
Omar Emara b115557883 Fix: Compositor Defocus maximum size has no effect
The Defocus node maximum size option has no effect if Z Depth is not
enabled. That's because the code incorrectly uses the maximum CoC radius
even though it is not relevant if Z Depth is disabled. To fix this, use
the maximum size option directly in case of no Z Depth.
2024-03-28 14:11:51 +02:00
Campbell Barton 686605a6dd Cleanup: declare arrays as const where possible 2024-03-28 22:57:57 +11:00
Clément Foucault 28c53cccd3 EEVEE-Next: Split clipmap_base_offset into two int2
This avoid uneeded complexity since we have a lot of space
inside the sunlight struct.
2024-03-28 12:56:51 +01:00
Pratik Borhade b59059a518 Fix: GPv3: Crash removing all materials
This is due to wrong function used for obtaining grease pencil material.

Pull Request: https://projects.blender.org/blender/blender/pulls/119954
2024-03-28 12:48:15 +01:00
Falk David e17bb40941 UI: GPv3: Disable buttons for layer group in layer tree
We disable the button for a layers depending on the
state of the parent group. E.g. if the parent group is hidden
the layer button to toggle the visibility was disabled
to indicate that toggling it won't actually change the
visibility of the layer (since the whole group is hidden).
This wasn't the case for layer groups though and this
change fixes that.
2024-03-28 12:35:18 +01:00
Falk David 6f3e3a709f Cleanup: GPv3: Use `uiItemR` for layer rows in layer tree
This was previously ussing the more verbose `uiDefIconButR`
but for no good reason. This now uses the `uiItemR` API.
2024-03-28 12:35:18 +01:00
Omar Emara 042c50b65f Compositor: Unify Bokeh Image node between CPU and GPU
This patch unifies the CPU and GPU implementation for the Bokeh Image
node. The bokeh is now evaluated at the center of pixels and allows
different sizes for the output kernel.
2024-03-28 13:23:58 +02:00
Jeroen Bakker 1b797cc0c3 Fix: EEVEE-Next: Planar probe display depth bias
Detected when researching #119800.

Pull Request: https://projects.blender.org/blender/blender/pulls/120009
2024-03-28 12:20:13 +01:00
Jeroen Bakker aedd5f2837 EEVEE-Next: Lookdev Background Blur
This PR implements the background blurring for studiolight/lookdev HDRIs.
The visual appearance matches EEVEE-Classic closely.

**Technical details**

- LOD0 is skipped as the regular background color can be used. The
  regular background color is blended towards LOD1.
- Volume probe is mixed in to remove baked in artifacts in the higher LODs.

Pull Request: https://projects.blender.org/blender/blender/pulls/119872
2024-03-28 12:18:37 +01:00
Milan Davidović c056c58493 Fix #106641: Missing Annotation widgets
Annotation layer widget was missing on the Tool Settings bar and the
side bar for some of the editors, as well as both color and layer
widgets on the Tool tab of the Properties editor.

Also fixed the Tool Settings bar not updating when drawing annotations
on the Image editor viewport, and the Tool panel in Properties editor
not updating when drawing annotations on the 3D scene.

Pull Request: https://projects.blender.org/blender/blender/pulls/112688
2024-03-28 12:15:33 +01:00
Jeroen Bakker dc243ff06b Fix: EEVEE-Next: Crash division by zero
When no shadow views are needed Blender could signal a division by
zero. This change fixes this by safe guarding the division by zero
ensuring the there is always a view to update.
2024-03-28 11:47:21 +01:00
Sietse Brouwer 19fdec058e Fix: GPv3: Hitting an assert when changing vertex group order
Reordering vertex groups (move up/down or sort) wasn't handled yet for
GPv3, resulting in an assert in `BKE_object_defgroup_array_get()`.
This PR fixes that.

Pull Request: https://projects.blender.org/blender/blender/pulls/119979
2024-03-28 11:27:03 +01:00
Jeroen Bakker 6b2306ad71 Fix: EEVEE-Next: Incorrect Assert
When using EEVEE with asserts enabled would fail. The reason
is an incorrect assert check.
2024-03-28 11:09:04 +01:00
Campbell Barton b2e00d1285 Cleanup: use const pointer arguments 2024-03-28 20:57:50 +11:00
Campbell Barton 5685481fcb Cleanup: rename "name" to "filepath" for full paths 2024-03-28 20:57:50 +11:00
Philipp Oeser 7da9521c7c Fix #119925: Mask property keyframes missing when reload the file
Caused by 6a79a6a24a

`Mask` `AnimData` is read by `BKE_animdata_blend_read_data` since above
commit, so `BLO_read_data_address` on `AnimData` is already done there.
However, `mask_blend_read_data` does it again
Similar calls to `BLO_read_data_address` in `blend_read_data` callbacks
were usually removed in 6a79a6a24a, Masks being an exception.

Accoding to @mont29 the reason while a double remapping will fail is
because there can only be one remapping from old addresses to new ones.
Once the new address has been read, this new address cannot be used as
'key' again (it will likely map to nothing, or worse, remap to something
completely unrelated!)

Pull Request: https://projects.blender.org/blender/blender/pulls/119961
2024-03-28 10:50:14 +01:00
Campbell Barton 362d381a5a Cleanup: pass GPUStateMutable as a const reference 2024-03-28 18:10:49 +11:00
Bastien Montagne e7abad23e0 Fix #118696: Nested override libraries can cause persistent resync warning.
The root of the issue was checking against the wrong RNA type to decide
whether a collection's item resolution could use the stored ID pointers
or not, leading to always only relying on names in CollectionObjects
case, leading to a lot of false 'need resync' detections in case names
would get out of sync between liboverrides and linked reference data.

Note that this probably had no other effect than resyncing when not
needed, since actual liboverride apply and resync code would already
do the right thing here.
2024-03-28 15:36:07 +09:00
Campbell Barton b4517ca148 Cleanup: replace suspicious use of "&" with "&&"
"&" was used in some cases where "&&" is more typically used,
while "&" works when both values happen to be 1, this doesn't read well.
2024-03-28 17:26:16 +11:00