Commit Graph

134613 Commits

Author SHA1 Message Date
Brecht Van Lommel
8682ad1908 Fix: Memory leak and race condition with particle effector RNG
Store RNG on per thread data, instead of the effector itself which may
be used by multiple objects evaluated in different threads.

This has been causing the blendfile_versioning test to fail randomly.
Thanks Ray and Aras for helping track this down.

Pull Request: https://projects.blender.org/blender/blender/pulls/119967
2024-03-27 18:06:31 +01:00
Brecht Van Lommel
d2b38a475f Fix: Cycles Python error after previous commit 2024-03-27 18:04:19 +01:00
Alaska
a0d5d9137b Fix #119937: Outdated tool tip for Automatic denoiser
Pull Request: https://projects.blender.org/blender/blender/pulls/119940
2024-03-27 17:49:58 +01:00
Harley Acheson
1984f08250 Fix #119846: EEVEE-Next: Rendering Infinite Samples
When rendering images, and not in the interactive viewport, do not
use infinite samples. Follow the  behavior of Legacy EEVEE.

Pull Request: https://projects.blender.org/blender/blender/pulls/119893
2024-03-27 16:16:34 +01:00
Weizhen Huang
68253b4937 Fix: Cycles volume light tree using wrong point to compute uncertainty angle
it is not clear from which point the `cos_theta_u` should be computed in
volume segment, so the original implementation was mixing the closest point
and the point where the minimal angle is formed.
Use the closest point on segment as a conservative measure.

Pull Request: https://projects.blender.org/blender/blender/pulls/119965
2024-03-27 15:06:05 +01:00
Germano Cavalcante
3031146097 Fix #119957: Crash when using 'angle constraint' Relative in Knife tool
Most likely caused by 6d491da0be

In that commit, `knife_pos_data_clear` started to clear (set `-1`) the
value of the current object (which is expected).

However, `knife_snap_angle_relative` relies on the current object to
transform the face normal to global space.

This is weak and error prone since the face is obtained from the
function itself.

The code could be optimized and reuse the face identified in
`knife_snap_curr`, but for now just identify the face object.
2024-03-27 10:55:38 -03:00
Weizhen Huang
72780c3769 Fix: Cycles light tree assertion failing on Intel Mac
in the test scene `all_light_types_in_volume.blend`, `theta - theta_o -
theta_u` is slightly above the threshold. Even if we do a strict check
with `acos` on the failing cases, it will go to the other branch and
deliver a result which is also 1.0f. Better to relax the threshold.
2024-03-27 13:46:57 +01:00
Sergey Sharybin
896b552672 Fix: Unable to change ID property type to Boolean
Caused by 0cdd429b44.

Steps to reproduce:
- Add a custom property to the default Cube object
- Open property editor
- Change type to Boolean
- Apply the changes

Observe that the property is still Int.

On a code side the issue is caused by the change in the idp_from_PyBool()
which used to return property of type IDP_BOOLEAN before the change, but
IDP_INT after the change.

Pull Request: https://projects.blender.org/blender/blender/pulls/119962
2024-03-27 13:43:00 +01:00
Germano Cavalcante
f0479e915f Transform: Implement Snap to Grid mode
Addresses two improvements to `Snap to Grid` as suggested in #73993:
- Make 'Absolute Grid Snapping' a new Snap Mode
- Snap to Grid in Non-Side View performed at ground level

Implementation details:

- Snap to Grid has no cursor symbol, unless we are in `Set Snap Base`
  mode. Similar to the previous 'Absolute Grid Snap' behavior.
- In Non-Side view, Snap to Grid is performed at ground level.
- If `Snap Base` is `Closest`, Snap to Grid uses the transform pivot
  point instead. Similar to the previous 'Absolute Grid Snap' behavior.
- The "Absolute Grid Snap" option has been removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/116109
2024-03-27 13:17:24 +01:00
Pratik Borhade
b3fe97414a Fix: Sculpt paint crash after converting active color attribute
Painting after converting active color attribute in sculpt mode causes crash.
Fix is same as 3641b4b884 with some cleanup

Pull Request: https://projects.blender.org/blender/blender/pulls/119780
2024-03-27 12:28:16 +01:00
Omar Emara
0709c07d04 Cleanup: Use actual class instead of base class
Use the TranslateCanvasOperation class in the declaration instead of its
TranslateOperation class. This is just to clarify the code when reading
it.
2024-03-27 12:54:42 +02:00
Omar Emara
4d9678c483 Fix: Sun Beams node is off by half a pixel
The Sun Beams node is off by half a pixel. That's because we add a half
pixel offset to the initial coordinates, but then sample the texture
with the half pixel. To fix thus, use the texture_bilinear_extend
utility to sample the image, which takes care of the half pixel offset.
2024-03-27 12:49:21 +02:00
Sergey Sharybin
e9dc9ef9a2 Fix #119936: Crash selecting in mask editor
Regression since 7a2d04a5c4.

Mask evaluation is part of parameters component, and there is no explicit
tags other than copy-on-eval for masks in a lot of cases.

Restore the previous graph topology for the link from copy-on-eval to the
parameters components of mask ID.

Potential candidate for 4.1.1.

Pull Request: https://projects.blender.org/blender/blender/pulls/119956
2024-03-27 11:00:55 +01:00
Omar Emara
5ae5614d1e Fix: Chroma Key differs from reference implementation
The GPU compositor Chroma Key node differs from the reference
implementation. This is caused by a typo, where the acceptance angle was
halved after computing tangent instead of before computing it.
2024-03-27 11:10:49 +02:00
Omar Emara
9aa63aa1e8 Fix: Lens Distortion node is off by half a pixel
The Lens Distortion node is off by half a pixel because their normalized
coordinates were at the pixel corners as opposed to their centers, where
this patch changes the behavior to the latter.
2024-03-27 09:04:34 +02:00
Omar Emara
aa208d3d18 Fix: Plane Deform nodes are off by half a pixel
The Plane Track and Corner Pin nodes are off by half a pixel because
their mask is computed at the pixel corners as opposed to their center,
where this patch changes the behavior to the latter.
2024-03-27 08:54:04 +02:00
Omar Emara
7113692206 Fix: Directional Blur node is off by half a pixel
The Directional Blur node is off by half a pixel because it transforms
the pixels at their corner as opposed to their center, where this patch
changes the behavior to the latter.
2024-03-27 08:50:44 +02:00
Omar Emara
6df333a3c7 Fix: Movie Distort node is off by half a pixel
The Movie Distort node is off by half a pixel because it evaluates the
distortion at the corner of pixels as opposed to their center, where
this patch changes the behavior to the latter.
2024-03-27 08:47:07 +02:00
Jonas Holzman
913acaf395 Fix #86325: tilted viewport orientation in default startup
Since v2.5 Blenders viewport view has been tilted by around ~0.8
degrees to the right, resolve this using a lookup table to update
the the defaults.

Ref !113751
2024-03-27 17:13:02 +11:00
Campbell Barton
976b2d47b4 Unbreak building PyDocs from error in recent refactor
Building docs with buildinfo was failing
2024-03-27 16:26:31 +11:00
Campbell Barton
3b8818cb6e Docs: avoid potential error with templated strings
Use a method of declaring templated strings that properly escapes
characters.

Also use utf-8 encoding for the conf.py.
2024-03-27 15:53:27 +11:00
Campbell Barton
a6dd4f9cc7 Cleanup: simplify & de-duplicate bl_file_extensions variable 2024-03-27 15:10:51 +11:00
Campbell Barton
3f7742f65d GHOST/Wayland: only apply #119871 workaround with LIBDECOR
Disable fix from [0] unless LIBDECOR is used.

This caused:
- KDE 6.0.2 to fail to start full-screen.
- RIVERWM to show a blank preferences.
- HYPRLAND to assert with a negative window height
  when starting full-screen.

Also replace flush & dispatch with a round-trip which fixes an error
on GNOME with non maximized/full-screen windows not showing any contents
on startup until a redraw was triggered.

[0]: 7371b11bb5
2024-03-27 15:04:03 +11:00
Campbell Barton
e078112a53 Fix notifiers from window events using the wrong window
The active window in the context may not match the window where GHOST
events are generated. Notifiers for new windows would always be ignored
with the context's window set to null for example.

Noticed while investigating #119871.
2024-03-27 15:04:03 +11:00
Campbell Barton
2a55aabbd8 Fix minor error in recent theme preset save operator
Changes to recent commit [0].

- Replace poll_message_set with report in the execute function.
- Remove f-string use which violates string formatting convention.
- Remove unnecessary string to bool.

[0]: ee38a7b723
2024-03-27 15:04:03 +11:00
Aaron Carlisle
7cb8c57728 Docs: Python: Update Sphinx to 7.2.6
This matches what we use for the manual.
Also updates corresponding dependencies.
2024-03-27 00:02:31 -04:00
Campbell Barton
2709888f2d Cleanup: de-duplicate date assignment
Use the same format when there is no build-info available.
2024-03-27 15:01:30 +11:00
Campbell Barton
81a636dcf4 Cleanup: remove unused import, consistent quote style 2024-03-27 14:54:00 +11:00
Campbell Barton
2a25340da4 Cleanup: quiet missing-declarations warnings 2024-03-27 14:53:58 +11:00
Hans Goudey
7f25242089 Cleanup: Move object mode switching declarations to proper modules
Keep each function's declaration in the header file associated with its
module. Arguably mode switching should be more organized, but for now
it's better to just declare functions in more predictable places.
2024-03-26 23:45:43 -04:00
Hans Goudey
436c0a773e Cleanup: Remove object vgroup functions to proper header
These functions were declared in the editors/mesh module but
defined in the editors/object module. This commit moves them to
a separate header associated with the object editors module.
2024-03-26 23:45:43 -04:00
Aaron Carlisle
32db305899 Docs: Python: Refactor the config file out of 'sphinx_doc_gen.py'
This was done originally because we need access to some information that is avalable from `bpy` however, we only need a few pieces of information.

Instead, I have refactored the code to a traditional `conf.py` file that uses template strings that get substituted when the file is copied to the build folder.

The goal here is to make it simpler to adjust the configuration.

This change also moves the config generation from `rna2sphinx` to the main function.

Pull Request: https://projects.blender.org/blender/blender/pulls/119904
2024-03-27 04:27:40 +01:00
Hans Goudey
148940ad15 Cleanup: Remove unnecessary keywords from newly C++ headers
Pull Request: https://projects.blender.org/blender/blender/pulls/119943
2024-03-27 02:45:30 +01:00
Hans Goudey
b8b745ae1e Cleanup: Move remaining editors internal headers to C++ 2024-03-27 02:45:27 +01:00
Harley Acheson
ee38a7b723 UI: Button to Save Custom Themes
Add a new "Save" to the Themes list in Preferences to save (overwrite)
custom themes. The operator has a poll function to disable for built-in
themes. Shows a confirmation when overwriting.

Pull Request: https://projects.blender.org/blender/blender/pulls/119491
2024-03-27 01:11:50 +01:00
Hans Goudey
acd1b0b7f9 Refactor: Use C++ Vector for RNA/context collection retrieval
Previously retrieving a collection from the context like "selected_ids"
would give a linked list of allocated items. Now it returns a vector of
RNA pointers. Though the number of items is typically fairly small,
using contiguous memory and avoiding many small allocations are
typical performance improvements that could still be beneficial
when there are many items. Iteration also becomes much simpler.

Pull Request: https://projects.blender.org/blender/blender/pulls/119939
2024-03-27 00:47:39 +01:00
Campbell Barton
3416fe6e1e License headers: add SPDX headers 2024-03-27 10:31:24 +11:00
Campbell Barton
40ab214c0a Cleanup: spelling in comments 2024-03-27 10:25:31 +11:00
Campbell Barton
d6c4433451 Cleanup: remove declarations for removed functions 2024-03-27 10:23:53 +11:00
Campbell Barton
3f594f7b2f Cleanup: consistent naming for EditMesh::looptris elements
Use the term `ltri` everywhere.
2024-03-27 10:09:12 +11:00
Campbell Barton
2220696d25 BMesh: avoid copying by value for BMLoop triangles
Caused by [0] which made BMLoop[3] variables & arguments copy by value.

[0]: 3805974b6f
2024-03-27 10:09:10 +11:00
Hans Goudey
f2c5cae3d8 Cleanup: Remove unused RNA function call functions
These functions appear to have been unused for the last 15 years.
They are quite complex with the var_args handling, and may get in
the way of some other cleanups in the area.
2024-03-26 18:12:21 -04:00
Hans Goudey
e1c54d5a24 Fix: Windows build error after recent cleanup commit 2024-03-26 16:20:40 -04:00
Hans Goudey
cd76d06f95 Cleanup: Use boolean instead of int 2024-03-26 16:04:03 -04:00
Hans Goudey
c72d6100ba Cleanup: Remove unrelated change added in previous commit
WIP change unrelated to anything else. Sorry for the noise!
2024-03-26 16:00:00 -04:00
Hans Goudey
48e4576162 Cleanup: Remove unnecessary keywords from C++ headers 2024-03-26 15:58:39 -04:00
Hans Goudey
265bfdb019 Cleanup: Resolve allocation size warning in Hook modifier RNA
GCC seems to complain about a possible signed to unsigned conversion
in combination with allocation and copying here.
2024-03-26 15:43:12 -04:00
Hans Goudey
0cdd429b44 Cleanup: Use newer API for creating IDProperties in most places
There are still a few places that are more complicated where the replacement
to `IDP_New` isn't obvious, but this commit replaces most uses of the ugly
`IDPropertyTemplate` usage.
2024-03-26 15:39:39 -04:00
Hans Goudey
e0567eadbd Cleanup: Use FunctionRef for IDProperty iteration callback
Avoid the need for a seaprate user_data argument.
2024-03-26 15:39:39 -04:00
Clément Foucault
2a600b4a83 EEVEE-Next: Shadow: Limit view per shadow map projection
This limits the number of tilemaps per LOD that can be fed to avoid the
easy to hit "Too many shadow updates" (#119757).

This allows for a max 64 tilemaps to be updated at once at their lowest
requested LOD (so ~10.6667 point lights if every faces of the punctual
shadow map is needed, but likely more in practice).

Unfortunately this is still quite low and will surely be hit quite soon
with directional shadow added to it. One idea to workaround this would
be to time slice the update of some lights, but this opens a whole can
of worms that I'm not ready to open for now so I created #119890 for
future reference.

Some notes, most lights seems to request around 3 LODs. It might help
to allow requesting at least 2 LODs if we are rendering since volumes
might want lower LOD available for volumes.

I added a very simplistic heuristic that also lowers the max tilemaps
when transforming, animation playback or navigating the 3D view to
improve the responsiveness of the engine. Note that this doesn't
only lowers the resolution to the minimum requested one. So it should
be good enough in most cases.

Pull Request: https://projects.blender.org/blender/blender/pulls/119889
2024-03-26 20:33:31 +01:00