Commit Graph

144446 Commits

Author SHA1 Message Date
Campbell Barton
a7bc3e3418 Cleanup: quiet Python linter warnings 2024-12-11 11:26:24 +11:00
Campbell Barton
560b6e2831 Cleanup: spelling (make check_spelling_*) 2024-12-11 11:23:51 +11:00
Campbell Barton
e0f6a067c0 Cleanup: quiet undeclared function warning 2024-12-11 11:23:51 +11:00
Sean Kim
f10f278914 Cleanup: Rename & move SCULPT_handles_colors_report
Pull Request: https://projects.blender.org/blender/blender/pulls/131709
2024-12-11 01:22:36 +01:00
Hans Goudey
84c7684871 Geometry Nodes: Propagate vertex groups in join / realize instances nodes
Currently the realize instances code (which is also used by the join
geometry node) always creates generic attributes instead of vertex
groups. The expectation was that vertex groups would be replaced
by some form of generic attribute sooner rather than later. However,
it's clear that won't happen for some time, and this issue causes users
a lot of trouble. This commit preserves the vertex groups through the
operation. Any attribute name that was a vertex group on any of the
input meshes will become a vertex group in the result.

In the code this is a simple change because the attribute writer
abstraction allows writing to vertex groups as if the were just like
other contiguous arrays. In the future we could optimize the code
specifically for vertex groups.

This resolves the "bug" part of #99197 where the nodes remove vertex
groups. However, this doesn't change the fact that generating
primitive meshes in geometry nodes won't create vertex groups.
In general the property editor settings on the original mesh have
no effect on meshes created from scratch in geometry nodes.

Pull Request: https://projects.blender.org/blender/blender/pulls/131692
2024-12-11 01:17:23 +01:00
Clément Foucault
f8da7ecfe1 Cleanup: DRW: Move DRW_SHADER_FREE_SAFE and DRW_UBO_FREE_SAFE to GPU 2024-12-11 00:43:32 +01:00
Clément Foucault
9bd1a92778 Cleanup: DRW: Remove unused code 2024-12-11 00:38:10 +01:00
Clément Foucault
0ad4696125 Cleanup: DRW: Remove remaining of DRWTexture API 2024-12-10 22:47:46 +01:00
Clément Foucault
ad5efd4a5c Cleanup: Compositor: Use texture pool API directly 2024-12-10 22:42:53 +01:00
Clément Foucault
37f9ec7235 Refactor: Grease Pencil: Remove legacy texture pool API usage 2024-12-10 22:26:16 +01:00
Hans Goudey
363bc88ee7 Cleanup: Remove unnecessary unique_ptr usage for Line Art runtime
There is no need for this to be a unique pointer, the set can just be
stored directly.

Pull Request: https://projects.blender.org/blender/blender/pulls/131632
2024-12-10 22:05:54 +01:00
Hans Goudey
7baa22b49d Cleanup: Correct usage of std::unique_ptr in Line Art code
`.release()` is technically fine but semantically wrong here. First,
release is meant to take ownership from the unique_ptr, meaning
at best it's "weird" to not do anything with the pointer afterwards.
Second, the runtime struct with the unique_ptr was just default
constructed, which means the unique_ptr will be empty anyway.
2024-12-10 22:05:53 +01:00
Hans Goudey
7c97088fb2 Cleanup: Use proper type instead of void for line art runtime struct 2024-12-10 22:05:53 +01:00
Hans Goudey
282dd0c5c0 Cleanup: Fix copyright year in MOD_lineart.hh 2024-12-10 22:05:53 +01:00
Hans Goudey
03fd5fc58e Cleanup: Various C++ cleanups in MOD_lineart.hh
- C++ headers shouldn't have everything inside of `extern "C"`
- `typedef` and `struct` keywords are unnecessary in C++
2024-12-10 22:05:53 +01:00
Weizhen Huang
a16879a5f0 Fix #131240: Cycles: Negative integration range in Huang Hair
The cause is numerical issues with `fast_sinf()`. While fixing
`fast_sinf()` would ultimately fix the problem, it involves more
complications in other code paths, and it is safer to clamp the
integration range anyway.

Pull Request: https://projects.blender.org/blender/blender/pulls/131689
2024-12-10 21:56:04 +01:00
Hans Goudey
2fd3a633db Cleanup: Remove unnecessary name copy when removing attribute
BKE_defgroup_listbase_name_find has a StringRef argument nowadays.
2024-12-10 14:34:03 -05:00
Hans Goudey
d3fdfe013d Cleanup: Remove unnecessary anonymous attribute checks
These come from the time when anonymous attributes weren't
just names with a different prefix.
2024-12-10 14:34:03 -05:00
Harley Acheson
93e8c231aa Fix #88236: When Tabbing in Block Skip UI_HIDDEN
When pressing Tab to move to the next input in the same block (and
Alt-Tab to move backward), we currently skip buttons that have the
UI_BUT_DISABLED flag. This PR makes these operations also skip buttons
that have UI_HIDDEN. This makes tabbing work better in places like the
color picker where we show/hide the RGB and HSV buttons depending on
mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/131698
2024-12-10 20:13:28 +01:00
Jacques Lucke
14bb6cb62b Fix #129338: wrong tooltip for center option for text boxes
The tooltip used to say that the center is always the objects origin.
However, in the case of text-boxes, it's actually the center of the text box.

There might be valid use-cases to move the text box center to the
object's center, but it seems like the same can be achieved with offsets.
Also that would be a new feature that's out of scope of a bug report.

Pull Request: https://projects.blender.org/blender/blender/pulls/131693
2024-12-10 18:44:04 +01:00
Harley Acheson
2b7a968909 Fix #80356: UI Icon Alpha Should Not Affect Matcaps & Studio Lighting
Changing Icon Alpha in Preferences / Themes / User Interface / Styles /
Icon Alpha is meant to change the opacity of the UI icons. It should not
change the opacity of the previews of Matcaps and Studio lights as this
changes the color because of mixing with the background. This PR just
skips this icon type when changing the alpha for this preference.

Pull Request: https://projects.blender.org/blender/blender/pulls/131690
2024-12-10 18:19:28 +01:00
Clément Foucault
e29bda07b3 Fix #131633: GPU: Add Object Tool gizmo does not show correct bounds 2024-12-10 18:18:48 +01:00
Jacques Lucke
53ea147a51 Fix #131598: avoid relying on node tree update code being run before dependency graph is build
This avoids assuming that `BKE_ntree_update_main` has run on a node tree before
the depsgraph is build. The update code already finds the dependencies to
determine if a relations update is necessary or not. To avoid detecting these
dependencies again (which requires iterating over all the nested nodes), they
were cached on the node group so that they can be used when the depsgraph is
build.

However, since the update code does not run in all necessary cases yet
(#131598), this does not work currently. This patch fixes the situation by
removing the optimization of not having to find all dependencies again when the
depsgraph is build.

This optimization can be introduced again after we can be more sure that the
node tree update code runs whenever the node tree changes (which is what #131665
tries, but requires more discussion).

Pull Request: https://projects.blender.org/blender/blender/pulls/131685
2024-12-10 17:52:44 +01:00
Weizhen Huang
0b954d7777 Cleanup: make format 2024-12-10 17:51:29 +01:00
Jacques Lucke
585cd07899 Refactor: Blenloader: simplify writing libraries
This improves the `write_libraries` function in a couple of ways:
* No need to split the `bmain` which I find somewhat hard to reason about. I
  think it's good if `bmain` is as read-only as possible in this write-context.
  Instead a more explicit C++ data structure (`MultiValueMap<Library *, ID *>`)
  is used. I think this was the only place in write-code that used
  `blo_split_main`.
* Deduplication of the check that determines  whether a placeholder should be
  written for a specific ID.
* General cleanup to avoid unnecessarily deep nesting when iterating over IDs.

No functional changes are expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/131385
2024-12-10 17:43:09 +01:00
Clément Foucault
94b7035311 Fix: GPU: Broken compilation on Mac 2024-12-10 17:42:13 +01:00
Clément Foucault
5566e7f20e Fix: EEVEE: Material not always finish compiling when baking volume probes
Use the same workaround as for render.
Wrap the sync inside its own `custom_pipeline_wrapper` so that
we don't freeze the main thread when waiting for these 50ms.

Also remove the `manager->begin_sync()` and `manager->end_sync()`
as they are already present inside `render_sync`.

Pull Request: https://projects.blender.org/blender/blender/pulls/131678
2024-12-10 17:25:07 +01:00
Laurynas Duburas
8dcb76b6ad Fix #130688: Grease Pencil: Multiframe Editing not applying falloff for rotation & scale
Fixes rotation and scale in multi frame editing.

Pull Request: https://projects.blender.org/blender/blender/pulls/131634
2024-12-10 17:21:06 +01:00
YimingWu
7f8b811a42 Fix #131681: Grease Pencil: Build modifier concurrent mode div by zero
There could be strokes that have zero lengths (a dot), in this case a
NaN factor was given to the final build function, leading to invalid
index when accessing arrays. Now `get_stroke_factor` will return either
0.0f or 1.0f (depending on input factor) when stroke has zero total
length.

Pull Request: https://projects.blender.org/blender/blender/pulls/131683
2024-12-10 17:19:10 +01:00
Miguel Pozo
e24eadbb42 GPU: Add assert_framebuffer_shader_compatibility
Ensure all the framebuffer color attachments are written to.

Pull Request: https://projects.blender.org/blender/blender/pulls/130995
2024-12-10 17:13:06 +01:00
Jeroen Bakker
aee24fb6ba Vulkan: Updated NVIDIA/Linux driver support
NVIDIA driver before 550 doesn't work as expected on Linux. The issue is
known on the internet, but no real solutions are provided.

This change will limit the block list of older driver to the Linux
platform only. It has been reported that Windows these driver are
working and would enable older GPUs to work on Windows.

Ref #129160

Pull Request: https://projects.blender.org/blender/blender/pulls/131674
2024-12-10 15:37:38 +01:00
Omar Emara
98270a489b Compositor: Optimize constant size Bokeh Blur node
This patch optimizes the constant bokeh blur CPU implementation by
pre-computing the blur kernel from the bokeh kernel, and thus avoid
interpolation in the blur loop. Gives a 2x improvement.
2024-12-10 16:18:22 +02:00
Sybren A. Stüvel
b7028617ad Refactor: render tests, change how argparse is used
Some changes to how argparse is used in render tests:

1. Use the common approach of one dash for single-letter options (`-b`)
   and two dashes for longer options (`--blender`). In this commit that
   just means changing single-dashed (`-testdir`) to double-dashed
   (`--testdir`).

2. Remove unnecessary `nargs` arguments. The code was telling `argparse`
   to put CLI arguments into a list of one item, and then had code to
   turn that one-item list into the item itself. I've just removed the
   `nargs` argument altogether, as that just produces the desired
   value without requiring more code.

   I've also removed `nargs="+"` from the handling of the `--blender`
   parameter, as that allowed for multiple occurrences of `--blender
   {path}` but was silently ignoring all of those except the first.

   To ensure that required arguments are present, the code now uses
   `required=True` instead of `nargs`.

3. Add a `description` parameter so that `--help` shows what the
   test script actually does. Also it helps people (like me) who want
   to figure out which blend file is actually being opened by the
   test, without making the test itself more verbose.

No functional changes, except that you now cannot add multiple
`--blender` arguments any more (the CLI invocation will fail). This wasn't
used anywhere I could find, though.

Pull Request: https://projects.blender.org/blender/blender/pulls/131666
2024-12-10 14:52:34 +01:00
Clément Foucault
7a889b21bc Fix #131587: Overlay: Crash switching workspaces
- Make sure to initialize the `State` struct.
- Make sure to consider space node as 2D for grid overlay.
2024-12-10 14:08:05 +01:00
Jeroen Bakker
8c0b2a00dc Revert "Vulkan: Add support for LocalSizeId execution model"
This reverts commit ccab973556.

This change has some issues with Vulkan Validation layers. Reverting it
until it is clear what the cause is.
2024-12-10 13:42:22 +01:00
Jacques Lucke
6bdf9232b0 Fix #131565: missing null check for socket type
This was probably accidentally broken by 7348e670b3.
2024-12-10 13:22:38 +01:00
Weizhen Huang
b67b0c2847 Fix: Overlay: Volume wireframe visible regardless of setting
guard the drawing behind `show_surface_wire`

Pull Request: https://projects.blender.org/blender/blender/pulls/131527
2024-12-10 13:07:21 +01:00
Falk David
b0c3836280 Cleanup: Grease Pencil: Use ensure_vertex_group kernel function
Use the `bke::greasepencil::ensure_vertex_group` function instead
of a local static copy of the same function.
2024-12-10 11:53:55 +01:00
Falk David
612be514c6 Grease Pencil: Add lasso/box erase operators in draw mode
In Blender 4.2 in Grease Pencil draw mode it was possible to
erase strokes using box and lasso gestures.

Under the hood, these were just using the selection operators
that had special deletion handling if the object was in draw mode.

Rather than hacking this into the selection operations, this adds
two new operators:
* `grease_pencil.erase_lasso`
* `grease_pencil.erase_box`

When using one of the erase operations with auto-key, the previous
keyframe will be duplicated to the current frame (for the drawings
that are affected by the eraser).

They are mapped to the same shortcuts than the selection
operators in Blender 4.2.
* Lasso erase: `Ctrl`+`Alt`+`RMB`.
* Box erase: `B`.

This is part of #130518.

Pull Request: https://projects.blender.org/blender/blender/pulls/131504
2024-12-10 11:50:05 +01:00
Clément Foucault
fe228d26b4 Cleanup: DRW: Remove unused part of DRWTexture API 2024-12-10 11:33:00 +01:00
Clément Foucault
a005efd680 Refactor: Grease Pencil: Port usage of DRW_texture_create_* to Texture
Removes call to legacy API.

Pull Request: https://projects.blender.org/blender/blender/pulls/131636
2024-12-10 11:21:32 +01:00
Anthony Roberts
89102b3b5d Libs: Update Windows ARM64 Vulkan + shaderc
In line with what other platofrms have already done as part of #128577

Pull Request: https://projects.blender.org/blender/blender/pulls/131628
2024-12-10 11:16:12 +01:00
Jeroen Bakker
0ac92bda89 Fix #131602: Workbench: Incorrect texture usage depth of field.
Depth of field attaches the half res and scene color texture, but
doesn't provide the correct usage flags. This resulted in validation
errors in Metal & Vulkan.

Pull Request: https://projects.blender.org/blender/blender/pulls/131655
2024-12-10 11:06:51 +01:00
Jeroen Bakker
ccab973556 Vulkan: Add support for LocalSizeId execution model
Vulkan version 1.2 supports Workgroup execution model. Vulkan 1.3
introduced the LocalSizeId execution model and has been backported in
the VK_KHR_maintenance4 extension. In future SPIR-V versions the
Workgroup execution model will be deprecated.

This PR checks the availability of VK_KHR_maintenance4 extension and
when enabled compile the shaders towards Vulkan 1.3. This would
automatically use the LocalSizeId execution model.

See https://registry.khronos.org/vulkan/specs/latest/man/html/WorkgroupSize.html

Pull Request: https://projects.blender.org/blender/blender/pulls/131663
2024-12-10 11:06:12 +01:00
Jeroen Bakker
5ed49184fe Vulkan: Rebalance pool sizes.
Update the default pool sizes using some metrics from production files.
Adds a tool to check actual used pool sizes which can be enabled at
build time.

Pull Request: https://projects.blender.org/blender/blender/pulls/131661
2024-12-10 10:48:27 +01:00
Jeroen Bakker
f33433485e Fix #131512: Missing border in image editor overlay
Incorrect framebuffer was attached.

Pull Request: https://projects.blender.org/blender/blender/pulls/131651
2024-12-10 10:47:23 +01:00
Lukas Tönne
d6e78d05c9 Transform: Crazyspace support in edit mode for Curves and Grease Pencil
Edit mode for curves and Grease Pencil was using the plain object transform for
all points without support for individual crazyspace transforms. This patch adds
support for the local rotation matrices, so editing curves on top of modifiers
converts offsets into original geometry space.

For Curves objects these matrices are currently only computed by the surface
deformation node, so editing on top of a surface deformation is the only case
that works currently.
For Grease Pencil the armature modifier is supported and more should be added
in future (see overview task #131599).

Pull Request: https://projects.blender.org/blender/blender/pulls/131619
2024-12-10 10:16:56 +01:00
Jeroen Bakker
1bd8719a7f Vulkan: Add asserts to check attachment usage flags
When using a texture as attachment it must be created witht the
GPU_TEXTURE_USAGE_ATTACHMENT flag. If this is not the case it would lead
to incorrect usage in Vulkan. This change adds asserts to detect
incorrect usage.

Pull Request: https://projects.blender.org/blender/blender/pulls/131656
2024-12-10 09:53:18 +01:00
Aras Pranckevicius
f4b1e169aa Fix: VSE white balance modifier undefined results for HDR colors
Commit 073ce98231 back in 2016 changed white balance math to do
a pow based pixel operation instead of multiplication. However
pow on negative numbers (which would happen on any HDR input) is
undefined. Until some better math is decided upon, at least ensure
the input is not negative.
2024-12-10 10:21:24 +02:00
Jeroen Bakker
500b1f3c69 Vulkan: Add support for clearing depth via GPU_texture_clear
GPU_texture_clear was only used for clearing color textures, but that
changed recently. This PR adds supports for clearing depth/stencil
textures using GPU_texture_clear.

Pull Request: https://projects.blender.org/blender/blender/pulls/131653
2024-12-10 09:06:43 +01:00