Commit Graph

129560 Commits

Author SHA1 Message Date
Bastien Montagne b684864561 Fix USD I/O crashing on reports by using new wmJob report system.
Calling `WM_report` & co API from wmJob worker thread is utterly unsafe,
and should never have been done. It 'worked' so far presumably because
worker threads were barely (if ever) reporting anything that way, but
now USD IO code is spamming reports in some cases, leading to fairly
common crashes.

Pull Request: https://projects.blender.org/blender/blender/pulls/113883
2023-10-20 11:08:27 +02:00
Sergey Sharybin 21c8af467d Cleanup: Convert winfunc and utfconv to C++
Basically, the intern/utfconv directory, as well as users of
these headers.

Pull Request: https://projects.blender.org/blender/blender/pulls/113901
2023-10-20 10:27:31 +02:00
Sergey Sharybin 85c557ffa2 Cleanup: Rename BLI_string_utils.h to BLI_string_utils.hh
All users of it are now C++, which opens doors to add C++ to the
public API.
2023-10-20 10:27:26 +02:00
Sergey Sharybin 37838e4ed3 Cleanup: Convert fileops to C++
Use fileops_c.cc as a name since there is already fileops.cc.

Pretty much as-is conversion, so it is a C code in a C++ file.
2023-10-20 10:27:26 +02:00
Sergey Sharybin 4d02a14e5a Cleanup: Convert BLI_filelist to C++
Pretty much as-is conversion, so it is a C code in a C++ file.
2023-10-20 10:27:26 +02:00
Sergey Sharybin 5954fc45f8 Cleanup: Convert path_util to C++
Pretty much as-is conversion, so it is a C code in a C++ file.
2023-10-20 10:27:26 +02:00
Sergey Sharybin 6bbf7649d0 Cleanup: Convert string_utils to C++
Pretty much as-is conversion, so it is a C code in a C++ file.
2023-10-20 10:27:26 +02:00
casey bianco-davis 5a79023409 GPv3: Cyclical set operator
Simply sets the cyclical property selected strokes. Note this does not add extra geometry like the legacy operator.

Note: also adds a key bind 'alt c' to toggle, same as for curves.

Resolves #113671

Pull Request: https://projects.blender.org/blender/blender/pulls/111904
2023-10-20 10:12:24 +02:00
Hans Goudey c77bbdcf82 Fix: Mistaken curves copy and reference binding in fillet node
Mistake in f54d5df2fc and 55b477a093.
2023-10-20 09:55:31 +02:00
Campbell Barton eaffcee074 Cleanup: remove printf left in by mistake 2023-10-20 17:51:33 +11:00
Campbell Barton 55b477a093 Cleanup: quiet redundant-move warning 2023-10-20 14:21:59 +11:00
Campbell Barton 49218f531a Cleanup: format 2023-10-20 14:20:45 +11:00
Pablo Vazquez 385ef2c298 Extensions: Move Extensions Repositories panel to Extensions tab
Move "Extensions Repositories" panel from FilePaths to Extensions.

Temporary change until a design is agreed on, to make it easier to test
repos while developing without going back and forth between sections.
2023-10-20 14:14:21 +11:00
Campbell Barton 6f197f6df3 Merge branch 'blender-v4.0-release' 2023-10-20 14:00:41 +11:00
Campbell Barton ce7444fa50 Merge branch 'blender-v4.0-release' 2023-10-20 14:00:36 +11:00
Campbell Barton 57a5c6c4be GHOST/Wayland: add support for dead keys via xkb_compose
Dead keys worked in X11 but not Wayland (or XWayland),
use XKB APIs to support composition.

Resolve #113724.
2023-10-20 13:51:08 +11:00
Dalai Felinto a53dd6e93c GPv3: Fix rename layer group not updating RNA
I fixed this earlier for the layer themselves, but I didn't realize then
that I also had to do this change for the layer groups.

For reference, this was the layer name fix: cb0d260c4b.

Pull Request: https://projects.blender.org/blender/blender/pulls/113956
2023-10-20 00:55:14 +02:00
Alaska 686aece797 Shader: Adjust Coat Tint Color intensity based on Coat Weight
The previous formula for adjusting Coat Tint intensity resulted
in strong tints and sudden colour changes when using a low coat weight.

This commit fixes these issues by mixing between a white tint (no tint)
and the chosen tint based on the Coat Weight.

Pull Request: https://projects.blender.org/blender/blender/pulls/113468
2023-10-20 00:34:24 +02:00
Bastien Montagne 3aa5644751 Merge branch 'blender-v4.0-release' 2023-10-19 21:42:26 +02:00
Damien Picard e3fc935349 I18n: disambiguate and extract a few messages
Extract:
- Sculpt filter types from the Sculpt menu. Some of these types use a
  custom label, different  from those defined in the operator RNA,
  which was never extracted.
- "Today" and "Yesterday" from the file browser modification date.
- All name_plural from IDs, as these are used in the UI to list which
  data block is to be removed, when calling outliner.orphans_purge.

Disambiguate:
- "Area", meaning the measurement of a surface as opposed to a place.

Some messages reported by Satoshi Yamasaki in #43295.

Pull Request: https://projects.blender.org/blender/blender/pulls/113912
2023-10-19 21:39:58 +02:00
Clément Foucault f79b86553a EEVEE-Next: Add mesh volume bounds estimation
This adds correct object bounds estimation.

This works by creating an occupancy texture where one
bit represents one froxel. A geometry pre-pass fill this
occupancy texture and doesn't do any shading. Each bit
set to 0 will not be considered occupied by the object
volume and will discard the material compute shader for
this froxel.

There is 2 method of computing the occupancy map:
- Atomic XOR: For each fragment we compute the amount of
  froxels **center** in-front of it. We then convert that
  into occupancy bitmask that we apply to the occupancy
  texture using `imageAtomicXor`. This is straight forward
  and works well for any manifold geometry.
- Hit List: For each fragment we write the fragment depth
  in a list (contained in one array texture). This list
  is then processed by a fullscreen pass (see
  `eevee_occupancy_convert_frag.glsl`) that sorts and
  converts all the hits to the occupancy bits. This
  emulate Cycles behavior by considering only back-face
  hits as exit events and front-face hits as entry events.
  The result stores it to the occupancy texture using
  bit-wise `OR` operation to compose it with other non-hit
  list objects. This also decouple the hit-list evaluation
  complexity from the material evaluation shader.

## Limitations
### Fast
- Non-manifolds geometry objects are rendered incorrectly.
- Non-manifolds geometry objects will affect other objects
  in front of them.
### Accurate
- Limited to 16 hits per layer for now.
- Non-manifolds geometry objects will affect other objects
  in front of them.

Pull Request: https://projects.blender.org/blender/blender/pulls/113731
2023-10-19 19:22:14 +02:00
Harley Acheson dbd775c708 Revert "UI: Remove Colons from Property Names"
This reverts commit 8acd7a3c96.
2023-10-19 09:24:06 -07:00
Harley Acheson 8acd7a3c96 UI: Remove Colons from Property Names
Remove any automatic addition of the colon character to property names.

Pull Request: https://projects.blender.org/blender/blender/pulls/113797
2023-10-19 18:08:23 +02:00
bsavery d19ad12b45 Cycles: add support for AMD RDNA3 APUs
Pull Request: https://projects.blender.org/blender/blender/pulls/113696
2023-10-19 18:03:31 +02:00
Dalai Felinto cb0d260c4b GPv3: Fix rename layers not updating RNA
Implement the same logic as we do for the active layer, by calling the
corresponding RNA function.

This makes sure all the notifiers and DEG update calls are properly
called. This is needed at least for !113908.

Also adds an undo push step which was missing in main.

Co-authored and reviewed (in real life) by: Julian Eisel <julian@blender.org>
2023-10-19 17:17:19 +02:00
Hans Goudey b6b17ee5f9 Fix: Missing node tool menu update after moving asset to catalog
Moving an asset from "Unassigned" to a catalog needs to clear the node tool
asset tree caches and redraw the editor. That's solved here by emitting
an asset-specific notifier rather than the less clear "file list" one.

Pull Request: https://projects.blender.org/blender/blender/pulls/112980
2023-10-19 16:55:58 +02:00
Clément Foucault 454c8fd866 Fix EEVEE-Next: Broken volume shadowing from sun lights
Caused by 71dfcf4558
2023-10-19 16:50:57 +02:00
Christoph Lendenfeld 3fc2077c2a Fix: autokeyframing when pasting poses no longer worked
The if check wasn't properly inverted in
7be1b59daa

Pull Request: https://projects.blender.org/blender/blender/pulls/113940
2023-10-19 16:23:04 +02:00
Philipp Oeser 58721585b1 Merge branch 'blender-v4.0-release' 2023-10-19 16:03:12 +02:00
Philipp Oeser cdd122cd74 Fix #113885 : Drag and Drop colors misses an undo push
Since the operator can also act on e.g theme colors [and changes to these shouldnt send undo pushes], dont do a general `OPTYPE_UNDO`, but instead be a bit more specific and only do an undo push for buttons with `UI_BUT_UNDO`.

Probably good for LTS.

Pull Request: https://projects.blender.org/blender/blender/pulls/113887
2023-10-19 16:02:34 +02:00
Sybren A. Stüvel 29df70af44 Windows: fix missing #includes
Include the `<limits>` header for the `std::numeric_limits<>...` calls in
both `makesrna.cc` and the code it generates.

This fixes 395ac4c41f.
2023-10-19 15:47:40 +02:00
Clément Foucault 439d3ae945 Fix 113839: Eevee Next: Low resolution on local lights shadows
This was caused by the scalling factor not taken into
account during the usage tagging phase.
2023-10-19 15:45:32 +02:00
Julian Eisel aae0d12e50 Merge branch 'blender-v4.0-release' 2023-10-19 15:44:43 +02:00
Julian Eisel e7abced86e Fix #113726: Unable to open N panel for the first time with click drag
View2D isn't initialized in these regions yet, which is a valid state
for hidden regions. So consider that when calculating the region zoom
factor in the region scale operator.
2023-10-19 15:44:16 +02:00
Sergey Sharybin 687e58bb77 Cleanup: Simplify public API of unique name functions
Their return value was only used in one place.

Change it to comparison with a stored name, and make the functions
to return void instead.

Removing the return boolean makes it possible to change underlying
functions to work with std::string and return unique name by value.

Pull Request: https://projects.blender.org/blender/blender/pulls/113934
2023-10-19 15:07:57 +02:00
Hans Goudey fba7671205 Cleanup: Const correctness, unused variable warning in GP draw code 2023-10-19 15:03:32 +02:00
Hans Goudey 5db502a122 Fix: Build error after bounding box refactor
This function was changed in main after the buildbot built the PR.
Since we are just interested in grease pencil data here, just retrieve
the bounds from the geometry directly.
2023-10-19 15:02:15 +02:00
Jeroen Bakker f9aca93a47 Vulkan: Add Support for sRGB Framebuffer Enablement
Allow binding of framebuffers without sRGB to linear transform.
`GPU_framebuffer_bind_no_srgb`. This Patch removes color transform
artifacts in node, image and sequence editor.

When the framebuffer is an srgb framebuffer and it is bound without
the transformation, the SRGB textures are bound as UNORM variants.

As framebuffer, render pass and subpass recreation is ensured by
`VKCommandBuffer` we don't need to mark the framebuffer dirty at
this time. Later on we can optimize this by adding a state changed
detection for framebuffers and render passes.

Pull Request: https://projects.blender.org/blender/blender/pulls/113838
2023-10-19 14:41:18 +02:00
georgiy.m.markelov@gmail.com d6b8422193 Fix #113880: Vector Curve node crashes Hydra render
Fix incorrect input name.

Pull Request: https://projects.blender.org/blender/blender/pulls/113928
2023-10-19 14:35:46 +02:00
Hans Goudey 1cbd0f5a85 Refactor: Improve access to object data bounds
Currently object bounds (`object.runtime.bb`) are lazily initialized
when accessed. This access happens from arbitrary threads, and
is unprotected by a mutex. This can cause access to stale data at
best, and crashes at worst. Eager calculation is meant to keep this
working, but it's fragile.

Since e8f4010611, geometry bounds are cached in the geometry
itself, which makes this object-level cache redundant. So, it's clearer
to build the  `BoundBox` from those cached bounds and return it by
value, without interacting with the object's cached bounding box.

The code change is is mostly a move from `const BoundBox *` to
`std::optional<BoundBox>`. This is only one step of a larger change
described in #96968. Followup steps would include switching to
a simpler and smaller `Bounds` type, removing redundant object-
level access, and eventually removing `object.runtime.bb`.

Access of bounds from the object for mesh, curves, and point cloud
objects should now be thread-safe. Other object types still lazily
initialize the object `BoundBox` cache since they don't have
a data-level cache.

Pull Request: https://projects.blender.org/blender/blender/pulls/113465
2023-10-19 14:18:40 +02:00
Hans Goudey 40080f618c Sculpt: Use C++ Set to store PBVH Node BMesh elements
Mainly to simplify code and also add some add type safety, replace
`GSet` with `blender::Set` for the storage of BMesh triangles and
vertices on each PBVH node. Some initial tests point to better
performance too, but the numbers are hard to verify so far.

Because of the larger `PBVHNode`, memory usage slightly increases
(observed a 2% increase with a 1M face grid) for regular Mesh sculpting,
but it seems `Set` is more memory efficient than `GSet`, because I also
observed a 10% decrease in memory usage for dynamic topology.
In the future nodes can be split in a more data-oriented fashion to
reduce memory usage overall.

This also makes it simpler to switch to another type in the future.

Pull Request: https://projects.blender.org/blender/blender/pulls/113907
2023-10-19 14:18:15 +02:00
Sybren A. Stüvel 395ac4c41f RNA: generate valid infinite float property default values
In `makesrna`, generate valid default values for float properties, when those
defaults are positive/negative infinity.

Blender would currently generate the strings `inff` and `-inff`, which are not
valid C++. This PR changes that to `std::numeric_limits<float>::infinity()` and
`-std::numeric_limits<float>::infinity()`.

Context: the layered animation system (see #113594) will have animation layers
with strips on them. It will have the concept of "infinite strips", where from
a user's perspective there aren't even any strips at all, and the layer seems
to directly contain the keys themselves. This is purely a UI distinction
though, where we simply won't draw the outline of infinite strips. Being able
to work with ±∞ as floating point values has clear advantages, as then the
`strip.frame_start` and `strip.frame_end` properties will always "tell the
truth".

This particular change is necessary to allow these values as defaults. It is
not intended that users will have property sliders for these properties when
their value is "infinite" (but rather a button 'make finite' or something along
those lines), so interaction with the UI code will likely be minimal.

Pull Request: https://projects.blender.org/blender/blender/pulls/113854
2023-10-19 14:15:11 +02:00
Campbell Barton 0488117548 Unbreak debug build 2023-10-19 22:43:26 +11:00
Brecht Van Lommel 488989f78e Merge branch 'blender-v4.0-release' into main 2023-10-19 13:37:18 +02:00
Alaska 37ab9bb1ed Fix unnecessary mix nodes for Principled BSDF specular tint
If the specular tint is 0 in a 3.6 file, and the base color has a
node input, then don't add a mix node in versioning.

Pull Request: https://projects.blender.org/blender/blender/pulls/113893
2023-10-19 13:36:34 +02:00
Lukas Stockner 173ba71b6b Merge branch 'blender-v4.0-release' 2023-10-19 13:26:22 +02:00
Falk David 6281d9a039 Fix: GPv3 depth buffer
Resolves #113422.

The depth buffer was rendered to, but not correctly merged
with the scene depth buffer. This lead to, e.g. the object appearing
behind the grid.

This fixes the issue by rendering a "merge" pass.

Pull Request: https://projects.blender.org/blender/blender/pulls/113779
2023-10-19 13:22:38 +02:00
Falk David 26816931c4 Fix: GPv3: Remap materials
Also fixes a crash when moving the first material of the default Grease Pencil Suzanne down by one.

Pull Request: https://projects.blender.org/blender/blender/pulls/113855
2023-10-19 13:19:41 +02:00
Lukas Stockner c71e18054c Fix: Cycles: Non-physical layering weights can lead to negative closures 2023-10-19 13:13:48 +02:00
Jacques Lucke a5b8a04cb0 Cleanup: remove unnecessary namespace specifier 2023-10-19 12:28:22 +02:00