Commit Graph

151918 Commits

Author SHA1 Message Date
Hans Goudey
cec05ab440 Cleanup: Use mesh helper functions to access vertex group data 2025-07-10 16:17:05 +02:00
Hans Goudey
c21a98d76a Cleanup: Use references for CustomData arguments in data transfer 2025-07-10 16:17:05 +02:00
Hans Goudey
325ceabb09 Fix #141721: Adding curve attributes doesn't invalidate caches
In this report, adding the "resolution" attribute didn't clear the
evaluated positions cache. In some cases capturing an attribute on
the mesh might just add the mesh rather than using an attribute
writer.
2025-07-10 10:02:25 -04:00
Brecht Van Lommel
69862114a6 Fix: Preview render memory leak with new system ID properties
Could be reproduced by going to material properties and changing the
Principled BSDF base color.

Pull Request: https://projects.blender.org/blender/blender/pulls/141679
2025-07-10 15:31:36 +02:00
Nathan Vegdahl
69433a181e Fix #141024: Normalize active vertex group properly
When manually setting a group's vertex weight, auto-normalization would
fail in some circumstances, such as when all other groups are locked.

The root cause of this issue was our approach for ensuring that the
weight specified by the user remained as-is when possible during
normalization. Rather than "when possible", it erroneously *always*
ensured the weight stayed as-is even when that made normalization
impossible. It came down to this:

1. Normalization is done as a post process, with no knowledge of what
   changes were just made to the weights.
2. In order to (try to) make up for that and ensure that the just-set
   weight remains as the user specified, the active group was
   temporarily locked during normalization, which could prevent
   normalization in some cases.

This PR fixes the issue by introducing a new internal-only concept of
"soft locked" vertex groups to the normalization functions, intended to
be used in exactly these cases where there are weights that have just
been set and we want to avoid altering them when possible. Soft-locked
groups are left untouched whenever normalization is achievable without
touching them, but are still modified if normalization can't be achieved
otherwise.

This has been implemented by introducing a new bool array alongside the
"locked" bool array in the core normalization functions.  Although all
uses in this PR only ever specify a single group as "soft locked", using
a bool array will make it easy to use this concept in other weight
painting tools in the future, which may modify more than one group at
once.

Pull Request: https://projects.blender.org/blender/blender/pulls/141045
2025-07-10 14:51:50 +02:00
Nathan Vegdahl
caddde1eb7 Refactor: Clean up and modernize core vertex weight normalize functions
- Add code documentation.
- Use Span and references rather than pointers everywhere.
- Move all core normalization logic into
  `BKE_defvert_normalize_lock_map()`, and have the other variants call
  that. This keeps all the logic in one place, which will help make
  future changes easier since they only need to be made in one place.
- Add unit tests for `BKE_defvert_normalize_lock_map()`.
- Refactor `vgroup_normalize_all()` to be clearer and avoid an
  unnecessary `goto`.
- Make both `vgroup_normalize_all()` and `paint_weight_gradient_exec()`
  only call into a single core vertex normalization function, rather
  than branching into one of many.

No functional change intended.
2025-07-10 14:51:49 +02:00
Bastien Montagne
4ce93a4b4e Merge branch 'blender-v4.5-release' 2025-07-10 14:48:13 +02:00
Bastien Montagne
f7c24c290e Fix #141415: crash when pasting node group node in some cases.
Refactor from e5a921ad9b did not account for the fact that some
`poll_instance` functions may require valid ID pointers in the checked
node. This is the case e.g. of the node group node, as it also checks
all of the nodes inside the referenced nodegroup.

This commit also fixes a logical mistake in the polling check, that
would systematically prevent pasting of nodes with no `poll_instance`
callback.

Pull Request: https://projects.blender.org/blender/blender/pulls/141729
2025-07-10 14:44:42 +02:00
Campbell Barton
aa9eb3dfcb Merge branch 'blender-v4.5-release' 2025-07-10 22:29:24 +10:00
Campbell Barton
8c77f96446 Fix: crash passing in --gpu-backend without an argument 2025-07-10 22:27:04 +10:00
Bastien Montagne
6131168e12 Merge branch 'blender-v4.5-release' 2025-07-10 14:14:48 +02:00
Bastien Montagne
a7d7b808f0 Cleanup: Remove (unused) ubsan.supp file.
Committed by mistake with previous commit.
2025-07-10 14:14:05 +02:00
Bastien Montagne
67f9b5645a Merge branch 'blender-v4.5-release' 2025-07-10 14:13:39 +02:00
Bastien Montagne
1238cef46d LeakSanitizer: Exclude another error from Python (resize_compact). 2025-07-10 14:12:08 +02:00
Campbell Barton
ad29066d9c Merge branch 'blender-v4.5-release' 2025-07-10 21:10:20 +10:00
Campbell Barton
ca0929e103 Merge branch 'blender-v4.5-release' 2025-07-10 21:10:15 +10:00
Campbell Barton
841b3e9d81 Fix: avoid divide by zero in the "Stretch To" constraint
A zero scaled axis resulted in the matrix containing NAN values.
Use `safe_divide` to avoid this.

Ref !141654
2025-07-10 21:05:52 +10:00
Pratik Borhade
f4dbe20940 Fix: Grease Pencil: Assert duplicating layer with attributes
When duplicating a layer with layer attribute, caught an assert hit
at `attribute_to_writer()` due to size mismatch between attribute
domain (layers count) and attribute length.
Now fixed by moving `add_node()` prior to `foreach_attribute()`. This way,
extra node already added to runtime data and layer count is updated
inside `ensure_nodes_cache` with the next layers() call

Noticed it during review of !141090

Pull Request: https://projects.blender.org/blender/blender/pulls/141722
2025-07-10 12:13:30 +02:00
Aras Pranckevicius
f6e2afb82a Fix #141715: VSE video proxies lose video rotation
ffmpeg_copy_display_matrix needs to be done after avcodec_parameters_from_context
call, since that one (re)initializes all the parameters.

Pull Request: https://projects.blender.org/blender/blender/pulls/141716
2025-07-10 11:42:24 +02:00
Sergey Sharybin
3f6861f8f3 Merge branch 'blender-v4.5-release' 2025-07-10 11:37:27 +02:00
Sergey Sharybin
413d8e5406 Fix #141651: VSE: The Channel setting does not work independently in multiple areas
Make display channel part of the key for the final cache.

The prefetch uses display channel of 0, which is the default. It might
need to be adjusted, but it is unclear whether it was behaving different
prior to the 9e4c26574a.

Pull Request: https://projects.blender.org/blender/blender/pulls/141670
2025-07-10 11:35:39 +02:00
YimingWu
cead28561f Merge branch 'blender-v4.5-release' 2025-07-10 17:04:18 +08:00
YimingWu
69da277dcb Fix #141693: Grease Pencil: Restore jitter behaviour
The line to get `jitter_settings_` was accidentally removed by
cac2806ee2. This patch adds that back so
strokes will still have the correct jitter settings when drawing.

Pull Request: https://projects.blender.org/blender/blender/pulls/141707
2025-07-10 11:03:07 +02:00
Bastien Montagne
db8846c225 Merge branch 'blender-v4.5-release' 2025-07-10 10:47:49 +02:00
Bastien Montagne
26b8846d94 LeakSanitizer: Suppress errors in OpenEXR library.
This library generates a single recurrent leak report currently, likely
a badly handled global?

```
=================================================================
==192885==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 31 byte(s) in 1 object(s) allocated from:
    #0 0x7f8a5c9cf307 in operator new(unsigned long) (/lib64/libasan.so.6+0xb6307)
    #1 0x7f8a5b03a0ea in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate(unsigned long, unsigned long, char const*, unsigned long) (/home/blender/git/blender-vexp/install_sanitizer/lib/libOpenEXR.so.32+0xef0ea)
SUMMARY: AddressSanitizer: 31 byte(s) leaked in 1 allocation(s).
======================================================================
```
2025-07-10 10:46:59 +02:00
Mohamed Hassan
148eb703e1 Compositor: Integrate Sun Beams node into Glare node
This patch integrate the Sun Beams node into the Glare node as a new
mode. This is done because the Sun Beams node is mostly useless on its
own because it does no thresholding or addition, making it very hard to
use. On the other hand, the Glare node already does thresholding and
addition, so Sun Beams fits perfectly in it.

Pull Request: https://projects.blender.org/blender/blender/pulls/141424
2025-07-10 10:43:05 +02:00
Campbell Barton
ec4556ee98 Merge branch 'blender-v4.5-release' 2025-07-10 18:15:38 +10:00
Campbell Barton
7d4dc48c17 Merge branch 'blender-v4.5-release' 2025-07-10 18:15:34 +10:00
Campbell Barton
9f666b3ca8 Fix #139982: Subdivide curves doesn't interpolate curve tilt
Correct bezier curve interpolation & support tilt for bezier & nurbs
curves.
2025-07-10 18:07:51 +10:00
Aras Pranckevicius
077bd15387 Fix #141652: python exception when adding VSE Fade
Keep invalidate_cache('COMPOSITE') working, and map that to invalidation
of final frame & intra-frame caches of the strip.

Pull Request: https://projects.blender.org/blender/blender/pulls/141714
2025-07-10 09:51:53 +02:00
Guillermo Venegas
f22ea2e0ae Refactor: UI: Remove uiItemEnumO* functions
Similar to other removed UI layout functions, this removes uiItemEnumO*
functions and replaces them by calling `uiLayout::op` and writing enum
properties to the returned RNA pointer.

Part of: #117604

Pull Request: https://projects.blender.org/blender/blender/pulls/141632
2025-07-10 07:57:21 +02:00
Campbell Barton
96b47a12fc Merge branch 'blender-v4.5-release' 2025-07-10 15:32:48 +10:00
Campbell Barton
68f559db5d Fix #141663: Wrong help-line displayed when rotating the camera
When transforming a camera show a helper line from the frame center.
2025-07-10 05:29:47 +00:00
Campbell Barton
bc0ab8c6d9 Merge branch 'blender-v4.5-release' 2025-07-10 12:51:37 +10:00
Campbell Barton
9d7e4890c8 Merge branch 'blender-v4.5-release' 2025-07-10 12:51:32 +10:00
Campbell Barton
2f2331d067 Tools: warn about duplicate authors in the author list generator 2025-07-10 12:49:08 +10:00
Campbell Barton
f72f5a2297 AUTHORS: de-duplicate 2025-07-10 12:48:33 +10:00
Jesse Yurkovich
4fdf760412 Cleanup: format 2025-07-10 03:49:24 +02:00
Campbell Barton
aabedd8ad1 Merge branch 'blender-v4.5-release' 2025-07-10 10:52:19 +10:00
Campbell Barton
4a68512db9 Fix #141612: Boolean crash with NAN mesh vertex coordinates
Resolve crash caused from initializing `mpq3` values with NAN.

Ref !141655
2025-07-10 10:47:15 +10:00
Campbell Barton
267d5179c0 Tools: remove print from batch_edit_text utility
Remove unnecessary noise.
2025-07-10 10:41:53 +10:00
Campbell Barton
5dd160c39c Cleanup: indentation in cmake, sort files 2025-07-10 00:40:42 +00:00
Campbell Barton
ce7561982a Cleanup: use conventional license formatting
Quiet "make check_licenses" warning.
2025-07-10 00:38:11 +00:00
Campbell Barton
16e06a29f0 Cleanup: typo, spelling 2025-07-10 00:38:09 +00:00
Campbell Barton
96c214b0d2 Build: add missing include for Linux & GCC15 2025-07-10 10:38:03 +10:00
Lukas Stockner
eaa5f63ba2 Cycles: Replace thin-film basis function approximation with accurate LUTs
Previously, we used precomputed Gaussian fits to the XYZ CMFs, performed
the spectral integration in that space, and then converted the result
to the RGB working space.

That worked because we're only supporting dielectric base layers for
the thin film code, so the inputs to the spectral integration
(reflectivity and phase) are both constant w.r.t. wavelength.

However, this will no longer work for conductive base layers.
We could handle reflectivity by converting to XYZ, but that won't work
for phase since its effect on the output is nonlinear.

Therefore, it's time to do this properly by performing the spectral
integration directly in the RGB primaries. To do this, we need to:
- Compute the RGB CMFs from the XYZ CMFs and XYZ-to-RGB matrix
- Resample the RGB CMFs to be parametrized by frequency instead of wavelength
- Compute the FFT of the CMFs
- Store it as a LUT to be used by the kernel code

However, there's two optimizations we can make:
- Both the resampling and the FFT are linear operations, as is the
  XYZ-to-RGB conversion. Therefore, we can resample and Fourier-transform
  the XYZ CMFs once, store the result in a precomputed table, and then just
  multiply the entries by the XYZ-to-RGB matrix at runtime.
  - I've included the Python script used to compute the table under
    `intern/cycles/doc/precompute`.
- The reference implementation by the paper authors [1] simply stores the
  real and imaginary parts in the LUT, and then computes
  `cos(shift)*real + sin(shift)*imag`. However, the real and imaginary parts
  are oscillating, so the LUT with linear interpolation is not particularly
  good at representing them. Instead, we can convert the table to
  Magnitude/Phase representation, which is much smoother, and do
  `mag * cos(phase - shift)` in the kernel.
  - Phase needs to be unwrapped to handle the interpolation decently,
    but that's easy.
  - This requires an extra trig operation in the kernel in the dielectric case,
    but for the conductive case we'll actually save three.

Rendered output is mostly the same, just slightly different because we're
no longer using the Gaussian approximation.

[1] "A Practical Extension to Microfacet Theory for the Modeling of
    Varying Iridescence" by Laurent Belcour and Pascal Barla,
    https://belcour.github.io/blog/research/publication/2017/05/01/brdf-thin-film.html

Pull Request: https://projects.blender.org/blender/blender/pulls/140944
2025-07-09 22:10:28 +02:00
Lukas Stockner
cf92af3ac4 Cycles: Support Thin Film iridescence in the Glass BSDF
Supporting this on the Metallic BSDF will require some extra work,
and on the Glossy BSDF it doesn't make much sense conceptually
(for that kind of shader setup, we'll want to support layering in SVM),
but Glass BSDF just needs to be hooked up so might as well do that.

Pull Request: https://projects.blender.org/blender/blender/pulls/140832
2025-07-09 22:07:24 +02:00
Sean Kim
cd567f15af Cleanup: Remove unused includes in sculpt_* and paint_* files
Pull Request: https://projects.blender.org/blender/blender/pulls/141687
2025-07-09 21:37:04 +02:00
Hans Goudey
e573d9dd24 Revert "Wayland: Set surface color management"
This reverts commit 965b4dce6d.

This commit caused #141688.
2025-07-09 15:11:58 -04:00
Sean Kim
8f7ad48f7b Tests: Update Sculpt render test reference images
Previously, the tests produced inaccurate results when in batched mode
and on Mac. This commit updates them now that the results are consistent
again.

Related to #136688

Pull Request: https://projects.blender.org/blender/blender/pulls/141416
2025-07-09 21:09:42 +02:00