Commit Graph

9131 Commits

Author SHA1 Message Date
Campbell Barton
5003253aca Cleanup: spelling & repeated terms 2025-01-07 13:20:19 +11:00
Hans Goudey
a4bfa399e9 Fix #132631: Sculpt multires drawing performance regression
Caused by 39f7c506b5.

GPU vertex buffers were way over-allocated. Not sure how that happened.
2025-01-06 14:25:35 -05:00
Hans Goudey
c4cb68e53b Fix #132660: Sculpt multires mask overlay skipped without face sets
Overlay next code didn't account for 1618448abd.
2025-01-06 11:53:24 -05:00
Hans Goudey
c3d7cd0424 Fix #132651: Multires sculpt drawing crash with color attribute overlay
Mistak in 39f7c506b5.

The VBOs need to be allocated! And we can just use a single dummy
type as well, rather than using the type from the attribute request
which is meaningless in this case.
2025-01-06 11:41:52 -05:00
Jeroen Bakker
7db07fcc0b Fix #132611: EEVEE: Background disappear when using forward shaded volumes
In case forward shaded volumes are used the background can turn black.
This is because in this case an incorrect framebuffer could be bound.

Pull Request: https://projects.blender.org/blender/blender/pulls/132678
2025-01-06 15:13:58 +01:00
Jeroen Bakker
13b5e4f025 Fix #132454: Channel shuffling image engine
Current code selected incorrect `.push_constant` override and only
uploaded a single float (R).

Pull Request: https://projects.blender.org/blender/blender/pulls/132693
2025-01-06 15:09:44 +01:00
YimingWu
96c6f543ec Fix #131738: Grease Pencil: Use correct textures in acquire_resources.
Apparently the issue was caused by a copy-paste mistake in 37f9ec7235
where in `use_mask_fb` branch it should bind `mask_` textures. Now
mask layer draws correctly.

Pull Request: https://projects.blender.org/blender/blender/pulls/132343
2025-01-06 11:22:30 +01:00
Campbell Barton
d2d754be3f Cleanup: spelling in comments (make check_spelling*)
- Back-tick quote math expressions so differentiate them
  from English.
- Use doxygen code blocks for TEX expressions.
2025-01-04 16:26:39 +11:00
Sybren A. Stüvel
266d1e8d2f Anim: do not draw constraint relationship lines for invalid targets
Only draw relationship lines between a constrained object/bone and its
target when there is actually a valid target. Previously Blender would
always draw a line, which would go to the world origin when the
constraint has no target. This was visually rather noisy and potentially
even misleading when there is actually an object at the origin.

Fixes #131477

Pull Request: https://projects.blender.org/blender/blender/pulls/132592
2025-01-03 15:51:40 +01:00
Ray Molenkamp
5783950ac5 Revert: 0dc484f9cc bf_rna modernisation
This caused build errors on the docs builder, I can't seem to reproduce
locally, so revert for now and have another look at some point in the
future.

Sadly as these changes usually go, this took 5c515e26bb and
2f0fc7fc9f with it as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/132559
2025-01-02 19:56:24 +01:00
Campbell Barton
f00661614f Cleanup: remove vector CLAMP macros
This can be done using functions to avoid multiple argument
instantiations.
2025-01-02 15:11:23 +11:00
Campbell Barton
dca0996777 Cleanup: various non-functional changes for C++ 2025-01-02 15:11:20 +11:00
Hans Goudey
11e97bd593 Fix: Assert for material span size after recent cleanup
Caused by 6871fe8415.

The assert was harmless, the array of null pointers was just longer
than necessary.
2024-12-31 15:13:56 -05:00
Ray Molenkamp
0dc484f9cc Cleanup: CMake: Modernize bf_rna dependencies
Pretty straightforward

- Remove any bf_rna paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132413
2024-12-31 18:23:25 +01:00
Hans Goudey
455326fd67 Fix #132488: Crash drawing edge attribute in sculpt mode 2024-12-31 09:44:16 -05:00
Hans Goudey
39f7c506b5 Refactor: Tweak draw_pbvh.cc code organization
With the goal of removing the type and custom data domain from
the attribute requests, tweak the order of the calls to ensure that
each vertex buffer is allocated until after we know about the source
mesh data format. After that, it makes more sense to have the loop
over BVH nodes inside each extraction function.

Pull Request: https://projects.blender.org/blender/blender/pulls/132467
2024-12-31 01:06:00 +01:00
Hans Goudey
6871fe8415 Cleanup: Use Span for GPU batch array
Pull Request: https://projects.blender.org/blender/blender/pulls/132464
2024-12-30 18:55:23 +01:00
Hans Goudey
7366dc1edb Cleanup: Remove unused draw cache function declarations 2024-12-30 12:12:23 -05:00
Ray Molenkamp
de3accb68a Cleanup: CMake: Modernize bf_draw dependencies
Pretty straightforward

- Remove any bf_draw paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132411
2024-12-28 21:38:19 +01:00
Alaska
8efd41271d Compositor: Add OIDN Quality to denoise node
This commit exposes the "Quality" option of the Open Image Denoiser
to the user for the denoise node in the compositor.

There are a few quality modes:
- High - Highest quality, but takes the longest to process.
- Balanced - Slightly lower quality, but usually halves
the processing time compared to High.
- Fast - Further reduce the quality, for a small increase in
speed over Balanced.

Along with that there is a `Follow Scene` option which will use the
quality set in the scene settings.

This allows users that have multiple denoise nodes
(E.g. For multi-pass denoising), to quickly switch all nodes between
different quality modes.

Performance (denoising time):
High: 13 seconds
Balanced: 6 seconds
Fast: 5 seconds

Test setup:
CPU: AMD Ryzen 9 5950X
Denoising a 3840x2160 render

---

Follow ups:
Ideally the "Denoise Nodes" UI panel in the render properties panel
would be hidden if the compositor setup does not contain any
denoise nodes.

However implementing this efficiently can be difficult and so it was
decided this task was outside the scope of this commit.

Pull Request: https://projects.blender.org/blender/blender/pulls/130252
2024-12-28 01:44:49 +01:00
Jesse Yurkovich
becaeac6da Fix: Prevent stack-buffer-overflow inside BoneInstanceData ctor
The `math::transform_point` call returns a `float3` which is being fed
into a `float4` matrix row. This causes an out of bounds read to occur.

Use the `float4` constructor taking an explicit `w` parameter to avoid
the issue.

----
To trigger the ASAN error: Add a Metaball to the viewport
```
==61887==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7f0ce84c5cac at pc 0x000000b1a6fe bp 0x7ffc5ae10070 sp 0x7ffc5ae10060
READ of size 4 at 0x7f0ce84c5cac thread T0
    #0 0xb1a6fd in blender::VecBase<float, 4>::VecBase(float const*) /home/deadpin/source/blender-git/blender/source/blender/blenlib/BLI_math_vector_types.hh:219
    #1 0x62ef86e in blender::draw::overlay::BoneInstanceData::BoneInstanceData(blender::MatBase<float, 4, 4, 16> const&, blender::VecBase<float, 3> const&, float, float const*) (/home/deadpin/source/blender-git/build_asan/bin/blender+0x62ef86e) (BuildId: 6ae47f47805212d94d20c0872511ec90333cb6b5)
    #2 0x63b2136 in blender::draw::overlay::Metaballs::object_sync(blender::draw::Manager&, blender::draw::ObjectRef const&, blender::draw::overlay::Resources&, blender::draw::overlay::State const&) /home/deadpin/source/blender-git/blender/source/blender/draw/engines/select/../overlay/overlay_next_metaball.hh:85
```

Pull Request: https://projects.blender.org/blender/blender/pulls/132288
2024-12-26 22:30:53 +01:00
Ray Molenkamp
167c15e0c0 Cleanup: CMake: Modernize bf_nodes dependencies
Pretty straightforward

- Remove any bf_nodes paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132356
2024-12-26 19:52:49 +01:00
Ray Molenkamp
16eb4430f5 Cleanup: CMake: Modernize bf_render dependencies
Pretty straightforward

- Remove any bf_render paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132355
2024-12-26 18:50:53 +01:00
Ray Molenkamp
a0d9826b3c Cleanup: CMake: Modernize bf_imbuf dependencies
Pretty straightforward

- Remove any bf_imbuf paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132336
2024-12-25 23:32:15 +01:00
Ray Molenkamp
4dcef4421c Cleanup: CMake: Modernize bf_functions dependencies
Pretty straightforward

- Remove any bf_functions paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132335
2024-12-25 19:46:31 +01:00
Ray Molenkamp
a23aab3ddc Cleanup: CMake: Modernize bf_blenloader dependencies
Pretty straightforward

- Remove any bf_blenloader paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132334
2024-12-25 18:40:41 +01:00
Ray Molenkamp
c331c6b50e Cleanup: CMake: Modernize bf_blentranslation dependencies
Pretty straightforward

- Remove any bf_blentranslation paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132311
2024-12-25 17:40:25 +01:00
Ray Molenkamp
54604efdfd Cleanup: CMake: Modernize bf_windowmanager dependencies
Pretty straightforward

- Remove any bf_windowmanager paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132310
2024-12-24 22:40:38 +01:00
Ray Molenkamp
b7407aabb5 Cleanup: CMake: Modernize bf_gpu dependencies
Pretty straightforward

- Remove any bf_gpu paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132286
2024-12-23 21:38:19 +01:00
Ray Molenkamp
a7c39896c6 Cleanup: CMake: Modernize bf_blenkernel dependencies
Pretty straightforward

- Remove any bf_blenkernel paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132282
2024-12-23 20:08:37 +01:00
Ray Molenkamp
2992c63bc3 Cleanup: CMake: Modernize bf_bmesh dependencies
Pretty straightforward

- Remove any bf_bmesh paths from INC
- Add a dependency though LIB when missing

context: https://devtalk.blender.org/t/cmake-cleanup/30260

Pull Request: https://projects.blender.org/blender/blender/pulls/132203
2024-12-23 17:47:25 +01:00
Hans Goudey
3d0988a719 Cleanup: Move some math C-API usage to C++ API
Mostly part of an attempt to remove some of the lesser-used
parts of the C math API.
2024-12-20 21:46:59 +01:00
Hans Goudey
bcfe4c34da Cleanup: Move BVH utils to C++ namespace 2024-12-19 18:22:29 +01:00
Hans Goudey
a67b5f6f63 Fix #131316: Edit overlays rendered for geometry instances
Geometry instances shouldn't be drawn with cage overlays or other
edit mode overlays since they don't necessarily correspond to original
data. In this case the draw manager thought they were in edit mode
because the object data is copied from the instance parent-- we need
_some_ object for rendering.

Pull Request: https://projects.blender.org/blender/blender/pulls/132081
2024-12-19 02:42:14 +01:00
Hans Goudey
ee7f30a371 Fix #131989: Mesh paint mode selection does not work
Caused by 839108f623.

The edit mapping was invalid so we just created a dummy GPU
batch for the selection edit data. But it was invalid because we
weren't in edit mode. The fix just requires tweaking the checks
for this data that's also used outside of edit mode.
2024-12-17 17:16:20 -05:00
Hans Goudey
75ede253aa Cleanup: Remove unused Grease Pencil legacy code 2024-12-17 11:43:34 -05:00
Miguel Pozo
5bdb146e85 Fix #131967: Overlay: In-Front doesn't work in preview/viewport-render 2024-12-17 17:28:24 +01:00
Aras Pranckevicius
496a3749d7 Cleanup: rename namespace realtime_compositor->compositor
Pull Request: https://projects.blender.org/blender/blender/pulls/132008
2024-12-17 11:39:04 +01:00
Aras Pranckevicius
a401089a9d Cleanup: move compositor files out of realtime_compositor folder
By now it is just a "compositor", so move the files one folder up.
Things that were under realtime_compositor/intern move into
already existing intern folder.

Pull Request: https://projects.blender.org/blender/blender/pulls/132004
2024-12-17 10:34:24 +01:00
Jacques Lucke
b8228303bc Materials: take object and geometry material slot counts into account
Previously, the number of material slots on the geometry (e.g. mesh) was the
ground truth. However, this had limitations in the case when the object had more
material slots than the evaluated geometry. All extra slots on the object were
ignored.

This patch changes the definition so that the number of materials used for
rendering is the maximum of the number of material slots on the geometry and on
the object. This also implies that one always needs a reference to an object
when determining that number, but that was fairly straight forward to achieve in
current code.

This patch also cleans up the material count handling a fair amount by using the
`BKE_object_material_*_eval` API more consistently instead of manually accessing
`totcol`. Cycles uses the the same API indirectly through RNA.

Pull Request: https://projects.blender.org/blender/blender/pulls/131869
2024-12-16 18:08:06 +01:00
Campbell Barton
94d39aac0c Cleanup: spelling (make check_spelling_*) 2024-12-14 23:17:49 +11:00
Jacques Lucke
c36567d156 Revert "Materials: take object and geometry material slot counts into account"
This reverts commit 47c255e2da.

There are unexpected problems with mesh rendering. Looks like some `max(1, ...)`
are missing.
2024-12-13 16:54:08 +01:00
Miguel Pozo
37e09218f5 Cleanup: Overlay: Remove redundant setting
The EARLY_FRAGMENT_TEST(true) from select_id_patch already implies
DEPTH_WRITE(DepthWrite::UNCHANGED)
2024-12-13 16:46:13 +01:00
Clément Foucault
556c69f66d Fix: EEVEE: ASAN use after free during baking with hair
This was caused by the `custom_pipeline_wrapper` being
broken up between sync and submit. This was invalid
API usage.
2024-12-13 16:41:54 +01:00
Miguel Pozo
9ec5a0cb02 Fix #131846: Overlay: Wireframe missing
Regression from b295df7345
Fix fragment/selection logic
2024-12-13 16:04:51 +01:00
Jacques Lucke
47c255e2da Materials: take object and geometry material slot counts into account
Previously, the number of material slots on the geometry (e.g. mesh) was the
ground truth. However, this had limitations in the case when the object had more
material slots than the evaluated geometry. All extra slots on the object were
ignored.

This patch changes the definition so that the number of materials used for
rendering is the maximum of the number of material slots on the geometry and on
the object. This also implies that one always needs a reference to an object
when determining that number, but that was fairly straight forward to achieve in
current code.

This patch also cleans up the material count handling a fair amount by using the
`BKE_object_material_*_eval` API more consistently instead of manually accessing
`totcol`. Cycles uses the the same API indirectly through RNA.

Pull Request: https://projects.blender.org/blender/blender/pulls/131761
2024-12-13 15:47:04 +01:00
Clément Foucault
b006a2c67b Fix: EEVEE: ASAN memcpy-param-overlap when reading float3 passes
Using a temporary variable fixes the issue.
2024-12-13 15:04:55 +01:00
Hans Goudey
09ef6c1a12 Fix: Stack buffer overflow in BoneStickData constructor
`float4(float3 &)` is currently problematic because of implicit conversions
to and from `float *`. Writing the constructor explicitly fixes the problem.
Also add const to the arguments.

Pull Request: https://projects.blender.org/blender/blender/pulls/131828
2024-12-13 10:29:20 +01:00
Campbell Barton
48bf2c08b7 Fix experemental preference use when "Developer Extras" is disabled
When "Developer Extras" is disabled, the experemental options
must not be used.

Some checks for experemental options weren't using the macro which
checks both are set.

Add comment to avoid this happening in the future.
2024-12-13 11:25:39 +11:00
Miguel Pozo
b295df7345 Refactor: Overlay: Port "next" shaders declarations to static CreateInfos
Use static CreateInfos for Overlay-Next shaders using a similar approach to Workbench shader variations.

Remove unused infos and shader sources.
Remove the `gpu_shader_create_info_get_unfinalized_copy` workaround.

Pull Request: https://projects.blender.org/blender/blender/pulls/131514
2024-12-12 23:05:00 +01:00