Commit Graph

8561 Commits

Author SHA1 Message Date
Aras Pranckevicius
174387e4d9 Fix #126908: 3D view background color affects attribute text outline color
The change was accidentally done in #121383 which primarily concerned
itself with overlay text colors, but started to use TH_BACK theme color
for the draw manager text (e.g. for geometry nodes value visualization)
outline color. Change behavior to use black or white outline color, based
on lightness of text color.

Pull Request: https://projects.blender.org/blender/blender/pulls/127071
2024-09-03 22:01:14 +02:00
Julian Eisel
a8c08e4a8c Refactor: Sculpt/Paint: Rename brush "tool" to "brush type"
The term "tool" is historic from before the actual tool system got
introduced. Since then the term was already a bit confusing, because it
wasn't directly related to the tool system, but there was still some
relationship between the two. Now brushes and their types are decoupled
much more from the tool system, with a single "Brush" tool supporting
all kinds of brushes (draw, grab, cloth, smooth, ...).

For a more clear terminology, use "brush type" instead of "tool".

For #126032 we need to write the brush type to the asset metadata (done
in !124618), so we can filter brushes based on the type (so the grease
pencil eraser tool only shows eraser brushes, for example). I'd like to
use future proof names for that to avoid versioning of asset metadata in
future, so I'd rather do the full naming change now.

RNA properties (thus BPY names) are not changed for compatibility
reasons. Can be done in 5.0, see blender/blender#124201.

Pull Request: https://projects.blender.org/blender/blender/pulls/126796
2024-09-03 15:20:34 +02:00
Miguel Pozo
1340aa615a Fix: EEVEE: Crash with >16 AOVs
Null check the result of `get_aov_texture`.
Reported in #127059.
2024-09-03 13:27:06 +02:00
Jeroen Bakker
5b16da6246 EEVEE: Fix insecure string literal
Detected by Sergey.
2024-09-03 11:10:27 +02:00
Campbell Barton
d19c13eb82 Cleanup: spelling & punctuation in comments 2024-09-03 12:59:37 +10:00
Miguel Pozo
7a55bdeaf9 EEVEE: Enable translation of screen messages
Add `Instance::info_append` so it's easier to log correctly formatted
info, and `Instance::info_append_i18n` to support string localization.

Co-authored-by: Damien Picard
Co-authored-by: Bastien Montagne <mont29@noreply.localhost>
Pull Request: https://projects.blender.org/blender/blender/pulls/124257
2024-09-02 20:13:31 +02:00
Clément Foucault
7d95fed911 Overlay-Next: In-Front support
This adds the missing in-front passes submission
and reorder the passes for better performance.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/127020
2024-09-02 19:14:01 +02:00
Clément Foucault
94608b32ab Overlay-Next: Fix crash in 2D image view 2024-09-02 16:36:23 +02:00
Clément Foucault
1c2918f50f DRW: Fix crash when entering UV editor 2024-09-02 16:17:21 +02:00
Jeroen Bakker
835e626a28 Workbench: Fill unused texture slots
Workbench doesn't fill all texture slots. In OpenGL it should match what
the shader is using, where some texture slots that have been defined can
be optimized away when not used. The Vulkan backend however uses all the
resources that has been defined in the shader create info.

When using a texture shader in workbench the shader would raise a
validation warning as there are slots defined that are never uploaded.
This PR fixes this by always set dummy textures in those slots.

Pull Request: https://projects.blender.org/blender/blender/pulls/127064
2024-09-02 11:12:47 +02:00
Clément FOUCAULT
895e315f2e Overlay-Next: Add Alt+B clipping support
Add back clipping using the same GL clip planes as before.

The difference is that the clip planes are now stored in the
`GlobalsUboStorage` instead of relying on another separate
UBO.

One annoyance of the current design is that the `overlay::Instance`
has to be created with the clipping state. This could be fixed later
by making the shader module a pointer instead of a reference.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/127018
2024-09-02 10:54:10 +02:00
Campbell Barton
ff3949426c Cleanup: spelling in comments 2024-09-02 16:55:19 +10:00
Laurynas Duburas
ce28af7352 Overlay-Next: Image
Overlay-Next version of image.

Rel #102179

Co-authored-by: Clément Foucault <foucault.clem@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/126243
2024-08-30 18:11:14 +02:00
Clément Foucault
cfb261928c Overlay-Next: Fluid
Straight-forward port.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126878
2024-08-30 17:48:52 +02:00
Clément Foucault
e22b931cfb Overlay-Next: Xray Fade
Straight-forward port.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126967
2024-08-30 17:33:28 +02:00
Clément FOUCAULT
870d664e31 Overlay-Next: Edit Curves
Straightforward Port

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126892
2024-08-30 16:03:44 +02:00
Campbell Barton
d497452a73 Cleanup: typo, spaces in comments, comment blocks & use double quotes 2024-08-29 17:16:44 +10:00
YimingWu
17397dae19 Fix #125680: Grease Pencil edit overlay shader theme switch
Grease Pencil v3 was using the same shader as particle strands, this leads
to sharing edit overlay color as particle strands. This patch fixes this
behaviour by adding a grease pencil toggle in the shader so grease pencil
overlay will use appropriate color and point sizes specified in the theme.

Pull Request: https://projects.blender.org/blender/blender/pulls/125689
2024-08-28 09:10:05 +02:00
Jeroen Bakker
8e80cfdfd9 EEVEE: Enable Shader Specialization Spatial Denoise
Spatial denoise uses shader specialization. The current shader had
this disabled for OpenGL and Vulkan. As OpenGL and Vulkan supports
shader specialization it is fine to enable them. Would result in
better optimized shaders.

I checked other shaders as well. This was the only one ignoring shader
specialization.

Pull Request: https://projects.blender.org/blender/blender/pulls/126830
2024-08-27 15:30:26 +02:00
Jeroen Bakker
dc8f5d5b89 Fix #125333: EEVEE: Trigger render step between rendering of samples
EEVEE doesn't trigger a render step between samples which leads to not recycling
memory on Metal backend leading to slower animation rendering and even out of
memory.

This PR uses the same approach as for workbench to solve the issue.

NOTE: Fix needs to be backported to 4.2
Pull Request: https://projects.blender.org/blender/blender/pulls/126781
2024-08-26 12:53:42 +02:00
Hans Goudey
1376c78e46 Cleanup: Further explicit retrieval of data in PBVH draw 2024-08-23 11:17:17 -04:00
Hans Goudey
5ece086678 Cleanup: Separate PBVH VBO format creation to functions 2024-08-23 11:17:16 -04:00
Clément Foucault
e5ba4cc7b0 Fix: Overlay: Missing backface culling in facing overlay
Same fix as for legacy overlay.

Fix #126351
2024-08-23 17:10:42 +02:00
Clément Foucault
0bad30317c Fix: Overlay: Missing backface culling in facing overlay
It was a side effect of enabling the depth write.

The fix is to enable the backface culling when it can
be honored.

However, this only works in solid mode.

Candidate for backporting to 4.2

Fix #126351
2024-08-23 17:10:42 +02:00
Clément Foucault
0d4c76c986 Fix: EEVEE: Material without Closure flag skip rendering
If a deferred layer doesn't contain any material with
a non-null closure flag, the deferred layer is skipped.

However, material with null closure flag exists and
still need to render opaque.

Fix this case by modifying the closure bits for the
deferred and probe pipelines.

Candidate for backporting to 4.2

Fix #126459
2024-08-23 16:45:01 +02:00
Hans Goudey
205d95107e Cleanup: Miscellaneous changes in draw_pbvh.cc
Reorganization to make the retrieval of data from the arguments struct
more explicit, combined with a bit of renaming. Mostly to make a future
diff visually simpler.
2024-08-23 10:18:38 -04:00
Clément Foucault
65efde82c3 EEVEE: Update shadow finalize test 2024-08-23 16:11:28 +02:00
Jeroen Bakker
6607d66274 Fix: EEVEE crash when baking light probes
Due to recent changes EEVEE crashes when baking light probes.
Film checks if the viewport compositor is enabled via
DST. In the baking thread this is not initialized and can crash
or lead to incorrect results.

Fixed by first checking if we are updating the viewport.

Pull Request: https://projects.blender.org/blender/blender/pulls/126685
2024-08-23 14:20:42 +02:00
Campbell Barton
b76fcc3a1f Cleanup: add missing headers to CMake's file listing 2024-08-23 10:19:53 +10:00
Campbell Barton
07b11206eb Cleanup: sort cmake file lists 2024-08-23 10:19:53 +10:00
Hans Goudey
6e845f54c3 Fix #126464: Subdiv optimal display edges causes broken wires on Metal
Caused by d1049f6082.
The old 255 FORCE_HIDE value converts to 1.0f as a float, not 255.0f.
2024-08-22 09:48:44 -04:00
Omar Emara
997ab86906 Compositor: Add Composite node for new CPU compositor
This patch implements the Composite node for the new CPU compositor.
This is essentially equivalent to the Viewer node commit.
2024-08-22 14:48:52 +03:00
Jeroen Bakker
7391810b53 Fix #126556: EEVEE: Metadata not available when only use material layer
When only rendering the cryptomatte material layer, the meta data wasn't
exported. Note this issue is due to differences not reproducable in 4.3.
But the fix should also be applied there for consistency.

Pull Request: https://projects.blender.org/blender/blender/pulls/126631
2024-08-22 11:31:34 +02:00
Hans Goudey
fa9aa5eab3 Cleanup: Remove unused variable 2024-08-20 13:39:27 -04:00
Casey Bianco-Davis
92155db27a GPv3: Canvas overlay
This implements the "Canvas" overlay for GPv3.

Some things of note:
- The color and subdivision are hard coded for now
- The scale and offset have been removed for now

Pull Request: https://projects.blender.org/blender/blender/pulls/126248
2024-08-20 17:05:34 +02:00
Casey Bianco-Davis
1fb849b98e GPv3: Sculpt mode overlay.
This adds lines and points overlay to sculpt mode.
Visibly of lines and points matches legacy grease pencil.

Pull Request: https://projects.blender.org/blender/blender/pulls/126453
2024-08-20 11:57:59 +02:00
Campbell Barton
908d004fcc Cleanup: spelling in comments 2024-08-20 14:25:52 +10:00
Jacques Lucke
354a097ce0 Volumes: improve file cache and unloading
This changes how the lazy-loading and unloading of volume grids works. With that
it should also fix #124164.

The cache is now moved to a deeper and more global level. This allows reloadable
volume grids to be unloaded automatically when a memory limit is reached. The
previous system for automatically unloading grids only worked in fairly specific
cases and also did not work all that well with caching (parts of) volume
sequences.

At its core, this patch adds a general cache system in `BLI_memory_cache.hh`. It
has a simple interface of the form `get(key, compute_if_not_cached_fn) ->
value`. To avoid growing the cache indefinitly, it uses the new
`BLI_memory_counter.hh` API to detect when the cache size limit is reached. In
this case it can automatically free some cached values. Currently, this uses an
LRU system, where the items that have not been used in a while are removed
first. Other heuristics can be implemented too, but especially for caches for
loading files from disk this works well already.

The new memory cache is internally used by `volume_grid_file_cache.cc` for
loading individual volume grids and their simplified variants. It could
potentially also be used to cache which grids are stored in a file.
Additionally, it can potentially also be used as caching layer in more places
like loading bakes or in import geometry nodes. It's not clear yet whether this
will need an extension to the API which currently is fairly minimal.

To allow different systems to use the same memory cache, it has to support
arbitrary identifiers for the cached data. Therefore, this patch also introduces
`GenericKey`, which is an abstract base class for any kind of key that is
comparable, hashable and copyable.

The implementation of the cache currently relies on a new `ConcurrentMap`
data-structure which is a thin wrapper around `tbb::concurrent_hash_map` with a
fallback implementation for when `tbb` is not available. This data structure
allows concurrent reads and writes to the cache. Note that adding data to the
cache is still serialized because of the memory counting.

The size of the cache depends on the `memory_cache_limit` property that's
already shown in the user preferences. While it has a generic name, it's
currently only used by the VSE which is currently using the `MEM_CacheLimiter`
API which has a similar purpose but seems to be less automatic, thread-safe and
also has no idea of implicit-sharing. It also seems to be designed in a way
where one is expected to create multiple "cache limiters" each of which has its
own limit. Longer term, we should probably strive towards unifying these
systems, which seems feasible but a bit out of scope right now. While it's not
ideal that these cache systems don't use a shared memory limit, it's essentially
what we already have for all cache systems in Blender, so it's nothing new.

Some tests for lazy-loading had to be removed because this behavior is more
implicit now and is not as easily observable from the outside.

Pull Request: https://projects.blender.org/blender/blender/pulls/126411
2024-08-19 20:39:32 +02:00
Iliya Katueshenock
1b67be14c6 Cleanup: BKE: Nodes: Functions renaming
Use snake style naming for all the kernel nodes functions.
Omit kernel prefix in the names since of the using namespace.
Use full forms of the terms
('iter' -> 'iterator', 'ntree' -> 'node_tree', 'rem' -> 'remove', ...).

Pull Request: https://projects.blender.org/blender/blender/pulls/126416
2024-08-19 20:27:37 +02:00
Clément Foucault
a6ce1cd9c7 Cleanup: Overlay: Silence warnings 2024-08-19 15:39:58 +02:00
Clément Foucault
e49bc9633b Overlay-Next: Particles
Straightforward port.

Duplicated some shaders for simplicity.

Includes wireframe for hair particle systems.

Functional change: Particle display now honnor line width.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126456
2024-08-19 15:38:55 +02:00
Clément Foucault
7d2672fb5d Fix: EEVEE: Broken overscan with pixel size greater than 1
Stupid sign error.

Fix #124961
2024-08-19 12:32:28 +02:00
Clément Foucault
86e9254a63 Overlay-Next: Wireframe
Straightforward port.

Left out particle hair to a separate patch for consistency
and simplicity.

Grease Pencil is also missing but that's also missing in
main.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126242
2024-08-19 12:31:08 +02:00
Clément FOUCAULT
b919887682 DRW: Add assertions for unsupported values
The `draw::Pass` types have different capabilities.
Custom ID and primitive expansion count are now
checked before command recording.
2024-08-18 15:39:06 +02:00
Clément FOUCAULT
7de383ffc6 Fix: Overlay-Next: Volume outline crashing
Caused by using the wrong pass to create the drawcall.
2024-08-17 13:50:53 +02:00
Jacques Lucke
5358d1b09a Depsgraph: avoid checking for evaluated object in draw code
This increases playback performance from 2.9fps to 3.2fps in the test file from #126391.

The check is unnecessary in draw code, because we know that the depsgraph
finished evaluation before. These checks were introduced to handle dependency
cycles during depsgraph evaluation.

At some point it may be nice to look into making these checks cheaper to avoid having
to use the unchecked version for performance reasons.
2024-08-17 00:41:31 +02:00
Omar Emara
5e88a1466c Compositor: Support Viewer node in new CPU compositor
This patch supports the viewer node in the new CPU compositor. To do
that, the context viewer output mechanism was refactored to allow CPU
storage by utilizing the result class as opposed to a GPU texture.
2024-08-16 16:40:43 +03:00
Hans Goudey
e7e1fd8a20 Fix: Sculpt: Incorrect overlay visibility check
Caused by 9eb7e8bfd1.
2024-08-15 12:44:49 -04:00
Hans Goudey
df6034c869 Cleanup: Sculpt: Make positions span const 2024-08-15 09:53:22 -04:00
Campbell Barton
b5e0b59736 Cleanup: remove space around identifiers in C-style comments 2024-08-15 20:46:00 +10:00