Commit Graph

135130 Commits

Author SHA1 Message Date
Clément Foucault
60a3d85b88 MEM: Make MEM_cnew return aligned memory
Now made it so that `MEM_cnew()` can be used for types with any
alignment.

Fixes #120407.

Pull Request: https://projects.blender.org/blender/blender/pulls/120569
2024-04-12 17:52:27 +02:00
Lukas Tönne
77451ea83f Fix #120542: Add a poll function to GPv3 sculpt mode keymap
The sculpt mode keymap needs a poll function to avoid showing tools like
the radial controls in object mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/120588
2024-04-12 17:50:38 +02:00
Hans Goudey
30c3f8eafb Revert "Fix #107676 detection of "natural" touchpad scrolling on Wayland"
This reverts commit af88ff0484.

That commit broke scrolling (at least in some cases).
Reverting the commit resolves #120587
2024-04-12 11:47:03 -04:00
Falk David
089a435376 Fix: GPv3: Default value for fill opacity in opacity modifier
Make sure the default value for the fill opacity is 1 instead of 0.
2024-04-12 17:42:42 +02:00
Falk David
5e04afcfa8 Fix: GPv3: Vertex colors don't show in render
The vertex color opacity was always set to 0.
This makes sure that during rendering, vertex colors are used.
2024-04-12 17:42:42 +02:00
Falk David
f9499d71f0 Fix: GPv3: Use fill opacities in batch cache
The `fill_opacity` attribute was used (e.g. by the opacity modifier)
but not added in the batch cache for rendering.
This fixes the issue.
2024-04-12 17:42:42 +02:00
Falk David
3fe348fc07 Fix: GPv3: Tint modifier icon
Was using the opacity modifier icon by mistake.
2024-04-12 17:42:42 +02:00
Philipp Oeser
6c045f7335 Fix #114428: clamp setting object active_material_index
There were multiple reports with objects having many empty material
slots.
The underlying reason for this is the behavior of adding/assigning
materials [which makes room in the form of empty material slots based on
the current `active_material_index` -- which atm. can be set to
arbitrary values]. So just e.g. setting this to 100 in a fresh file and
assigning a material would create 99 empty slots.

To resolve, now clamp to the existing number of material slots.

NOTE: there is already a range function defined, but this actually only
kicks in from the animation system (so clamping would take place there),
so clamping is expected to happen in the set functions (there is also a
related comment in `RNA_property_int_set`)

Pull Request: https://projects.blender.org/blender/blender/pulls/120434
2024-04-12 17:35:22 +02:00
Hans Goudey
2361f90264 Cleanup: Resolve integer type conversion warnings 2024-04-12 11:29:20 -04:00
Sergey Sharybin
a4b36cd0d5 Guarded allocator: Ensure alignment and size of MemHead
Ensure that the MemHead and MemHeadAligned are such that memory
allocation followed with the head offset keeps the allocation
aligned to at least MEM_MIN_CPP_ALIGNMENT.

Pull Request: https://projects.blender.org/blender/blender/pulls/120582
2024-04-12 17:22:46 +02:00
Sergey Sharybin
fac451e513 Cleanup: Convert guarded allocator to C++
Pull Request: https://projects.blender.org/blender/blender/pulls/120577
2024-04-12 16:44:49 +02:00
Campbell Barton
af88ff0484 Fix #107676 detection of "natural" touchpad scrolling on Wayland
The callback to set the relative direction wasn't running because
it required GHOST to request version 9 of the wl_seat_interface.

Natural touchpad events now work for KDE 6 and recent versions
of WLROOTS based compositors, GNOME 46 is uses wl_seat_interface
version 8 which still wont work.
2024-04-13 00:18:21 +10:00
Germano Cavalcante
c30afb7bf6 Fix #118694: snap cursor sometimes doesn't update when dragging and dropping assets
The problem happens because, on some OSs, `wm->winactive` is `nullptr`.

Another problem is that `wm->winactive->eventstate` sometimes does not
update when the mouse moves. This happens in some OSs when the cursor
is not over the active window. So the snap cursor state doesn't update.

The solution is to use the `eventstate` of the window in the context
(`CTX_wm_window(C)->eventstate`).

This matches other parts where `eventstate` is used.

Pull Request: https://projects.blender.org/blender/blender/pulls/120475
2024-04-12 15:27:05 +02:00
Christoph Lendenfeld
883af6dd63 Anim: Add custom pre and post frame color to motion path
This PR adds an option to specify custom colors for a
motion path. One for frames before the current frame
and one frame for after. With this it is easier to see
the relation of the motion path to the current frame.
That was already the case with the default colors, but
not with custom colors.

On a technical side note, the colors pre and post the current
frame were already different.
The shader multiplied the custom color by 0.25
for anything pre current frame.

Pull Request: https://projects.blender.org/blender/blender/pulls/119375
2024-04-12 15:11:51 +02:00
Christoph Lendenfeld
3fda0d5f8f Fix #119909: Unkeyable custom properties receive keyframes
In the case that "Custom Properties" was enabled in the user preferences,
the keyframing code would key all custom properties, regardless of that
property's type.
This can cause issues since it is keying e.g. the custom property that
cycles adds.

With this PR this is now limited to only Boolean, Int, Float, Double and Array.
Custom properties that have been defined via an addon are also not keyed.

Pull Request: https://projects.blender.org/blender/blender/pulls/119914
2024-04-12 14:48:10 +02:00
Falk David
355079cbb2 GPv3: Add option to disable masks in viewlayer
In GPv2 there was an option to disable masks during rendering
of a viewlayer. This wasn't implemented for GPv3 yet.

This needs to change the way the draw calls are created,
because we need to skip over drawings at render time.
So to do this, we precompute the drawing offsets,
then check if we need to skip over it and otherwise
create the draw calls.

Pull Request: https://projects.blender.org/blender/blender/pulls/120561
2024-04-12 14:44:13 +02:00
Jacques Lucke
769a9069de BLI: use float instead of int for weights in string search
Floats are a bit more convenient to deal with. Also, I find myself
expecting this to be a float on the call site.
2024-04-12 14:34:17 +02:00
Campbell Barton
a4de136e78 Cleanup: remove redundant preferences.inputs.use_ndof
This is available via: bpy.app.build_options.input_ndof
2024-04-12 21:26:20 +10:00
Falk David
196954dc66 Fix #120559: GPv3: Rendering issue if single point curve is set to cyclic
Caused by ca0b02aa96.
The `points.size() > 1` was added because we can't access
`lengths[points.size() - 1]` if the curve has a single point.
The fix just makes sure we default to a `u` value of `0.0f`
for single point cyclic curves.

Pull Request: https://projects.blender.org/blender/blender/pulls/120565
2024-04-12 13:19:53 +02:00
Falk David
ff625b79f6 GPv3: Expose "Use Lights" option in the object data properties
Adds a `use_lights` option to the layer in RNA and
exposes the setting in the object data properties under
the layer opacity.
2024-04-12 13:19:05 +02:00
Aras Pranckevicius
dc9d2d41f5 Fix #120499: OBJ MTL with Ni=0 are displayed as gray
Some files out there have index of refraction 0.0, which is
not quite valid. Ignore these and keep default IOR in the imported
material.
2024-04-12 14:16:46 +03:00
Christoph Lendenfeld
3eda9619f9 Anim: precalculate bounding indices for key drawing in the Graph Editor
While the drawing code already skipped drawing any key points that are not in view,
it did that with an `if` check within the `for` loop. This can be speed up quite a bit
by calculating the bounding indices beforehand and only iterating that range.

| - | Before | After |
| - | - | - |
| `draw_fcurve_selected_keyframe_vertices` | 44850ns | 3194ns |
| `graph_main_region_draw` | 32ms | 21ms |

Test file used
https://download.blender.org/ftp/sybren/animation-rigging/heavy_mocap_test.blend

Pull Request: https://projects.blender.org/blender/blender/pulls/120521
2024-04-12 12:41:45 +02:00
Jeroen Bakker
4ae9948f3a GPU: Improve push constants tests
- Expected results should come before actual result.
- Add test case for 8192 bytes as apple has a push constants size of 4096.
- Add more variation to the first order test data.

Improvements detected when working on vulkan backend and validated they
work on metal and opengl as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/120557
2024-04-12 12:26:26 +02:00
Christoph Lendenfeld
0157fede80 Anim: don't include handles when calculating FCurve bounds in Graph Editor
On heavy scenes, the function `get_graph_keyframe_extents`
takes up a considerable amount of the time (~50%) it takes to draw the Graph Editor.
This function is called to set the `View2D` extents which makes the scrollbars work properly.
I'd argue that level of precision isn't needed just to display scrollbars.
Passing the flag as `false` speeds up the drawing  code by 22%.

Timings for `graph_main_region_draw`
| Before | After |
| - | - |
| 32ms | 25ms |

Timings for `get_graph_keyframe_extents`

| Before | After |
| - | - |
| ~16ms | ~8ms |

Test file used
https://download.blender.org/ftp/sybren/animation-rigging/heavy_mocap_test.blend

Pull Request: https://projects.blender.org/blender/blender/pulls/120519
2024-04-12 11:27:36 +02:00
Bastien Montagne
b56457aa5e Core: ID Management: Make 'Purge' operation always recursive by default.
Inherited from previous versions of this feature, by default the Purge
operation from the Outliner would remove all unused IDs, recursively.
The same operation invoked from the File -> Clean Up main menu would by
default only delete directly unused IDs.

Now both will by default remove all (directly or indirectly) unused data.
2024-04-12 11:25:00 +02:00
Sybren A. Stüvel
d47e0c8ab9 Refactor: extract common code from make_new_animlistelem()
Replace copy-pasted code with a function call. This will make the intro-
duction of the `Animation` data-block much easier later on.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/120533
2024-04-12 11:17:13 +02:00
Campbell Barton
5b1a0a80fa STL: sanitize object name before using in a path
Object names can contain "/" & "\" and aren't safe to use in paths,
use BLI_path_make_safe_filename to ensure the name can be used in a
path.

Ref !120515
2024-04-12 17:07:52 +10:00
Campbell Barton
78413ff4e2 Fix error resetting the theme which would add a new theme
Regression caused by [0], also correct memcpy calls that overwrite
listbase link variables and the theme name, note that this is more a
code-correctness issue as it wouldn't cause user visible bugs.

[0]: adbec9eea9
2024-04-12 16:54:57 +10:00
Campbell Barton
cee184e97a Fix error from recent preset refactor
The recent change in [0] which added a filepath argument to pre/post
callbacks broke adding presets.

Remove the argument from operators as the the filename is sometimes
created based on values set in the pre-callback.

This mostly reverts the change, only keeping the filepath argument
for the static-method callbacks declared on the menu or panels.

[0]: 72e6191c89
2024-04-12 16:28:06 +10:00
Campbell Barton
98986c6562 Python: replace '%' with str.format for examples & templates
Use modern/preferred string formatting for user facing scripts.
2024-04-12 15:33:40 +10:00
Campbell Barton
0bb6317035 Theme: store the last loaded preset as a filepath
This is needed so we can reliably know which extension is associated
with a theme, so a theme can be refreshed on update and cleared when
uninstalled, needed to resolve !120289.
2024-04-12 13:23:09 +10:00
Campbell Barton
72e6191c89 PyAPI: include a filepath in preset pre_cb/post_cb callbacks
This is needed so the presets path can be stored in the theme,
so it's possible to keep track of the current theme.

Needed for fixing #120289.
2024-04-12 13:21:42 +10:00
Aaron Carlisle
f5bae8924d UI: Rename "QT rle / QT Animation" to "QuickTime Animation"
This is in accordance of the Human interface guidelines.
2024-04-11 23:03:36 -04:00
Campbell Barton
d5f837a8ee Cleanup: remove redundant string formatting 2024-04-12 10:04:07 +10:00
Campbell Barton
0660fa6971 UI: remove double-quoting in report
repr() already quotes, so including quotes isn't necessary
2024-04-12 10:02:41 +10:00
Hans Goudey
52cff75ce0 Geometry Nodes: Avoid repeated node tools lookup when empty
Currently the node tools asset tree for extending 3D view headers is
rebuilt whenever it's cleared, which is done by clearing the tree's storage.
That means the data is rebuilt on every redraw if there are no node tools
and the tree storage is empty. With larger asset libraries that can be
quite expensive.

Now, instead of clearing the map, use a new dirty tag to store whether
the asset tree is out of date compared to the assets.

This should resolve #120494
2024-04-11 17:26:08 -04:00
Hans Goudey
ed8a97131f Fix: Typo in asset report message 2024-04-11 15:28:40 -04:00
Sean Kim
f7d5ec8661 Refactor: Remove trim variables from SculptSession
This PR moves the three sculpt trim gesture variables from
`SculptSession` into the `TrimOperation` `struct` to reduce
the size of the former and make it less likely that the data
is depended on in other operators.

Pull Request: https://projects.blender.org/blender/blender/pulls/120504
2024-04-11 20:55:11 +02:00
Ray Molenkamp
8b9743eb40 CMake: Change build flags to use SSE42 if available
This cleans up our `TEST_SSE_SUPPORT` macro to only test
for SSE42 and passes the flags to the CMAKE_C/CXX_FLAGS

the cpu check module needed to move to its own folder since
the flags at the end of a CMakeLists.txt appear to be used
for all targets inside a CMakeLists file and cpu_check cannot
be build with sse42 flags.

This only affects Mac/Linux since MSVC has no buildflags
to target SSE42

Pull Request: https://projects.blender.org/blender/blender/pulls/118468
2024-04-11 20:46:14 +02:00
Iliya Katueshenock
0bd6279504 Nodes: Display node label for tooltips on a free reroute
It is not so informative to display `Input` (name of input socket)
tooltip for free reroute node. Instead, use label for this.

Pull Request: https://projects.blender.org/blender/blender/pulls/120534
2024-04-11 19:16:07 +02:00
Jacques Lucke
248dafef74 Geometry Nodes: use rotation socket in Curve to Points node
Looks like this was forgotten before. Other similar sockets have been converted already.

Pull Request: https://projects.blender.org/blender/blender/pulls/120526
2024-04-11 19:05:22 +02:00
Falk David
0f72f67d56 Fix: GPv3: Crash after conversion because of strokes with no points
In GPv2 strokes could technically have zero points.
`CurvesGeometry` doesn't allow this, so we need to make
sure to explicitly skip over strokes with no points.

Pull Request: https://projects.blender.org/blender/blender/pulls/120536
2024-04-11 19:03:34 +02:00
Jacques Lucke
486947398f Geometry Nodes: add invertable boolean output to invert matrix node
Not all matrices are invertable (e.g. when a transformation matrix is has
a scale of zero), and it's sometimes important when a matrix is.

This also better specifies the behavior when the matrix is not invertable:
the identity matrix is returned.

Pull Request: https://projects.blender.org/blender/blender/pulls/120530
2024-04-11 18:28:57 +02:00
Jason Fielder
5f86faf3a5 Metal: Fix write-only qualifier on shader generation
A small logic issue caused all write-only image resources
to be tagged as read-write in all cases. This caused
correctness issues on Intel and AMD GPUs which
are resolved through this change.

Change also yields a small performance uplift
due to enabling improved non-dependent workload
scheduling.

Authored by Apple: Michael Parkin-White

Co-authored-by: Michael Parkin-White <mparkinwhite@apple.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/120528
2024-04-11 18:17:40 +02:00
Sean Kim
2582664f67 Refactor: Organize and fixup functions in sculpt_trim.cc
This PR performs the following refactors in sculpt_trim.cc:

* Remove `depth_front` and `depth_back` as `struct` properties, as they
  are only used for generating the Mesh
* Moves the `calculate_depth` call into the `generate_geometry` step as
  the latter is dependent on data from the former already
* Reorganize the methods so the overall file reads better.
* Minor comment nits and additions

Pull Request: https://projects.blender.org/blender/blender/pulls/120331
2024-04-11 17:53:46 +02:00
Iliya Katueshenock
9f89cc5072 Refactor: Nodes: Generate socket tooltips in more generic way
Split code to separate functions depending on the source of info for
socket inspection. Each function retrieves some optional string.
Collecting of result string is just loop.

Pull Request: https://projects.blender.org/blender/blender/pulls/120496
2024-04-11 17:52:59 +02:00
Jacques Lucke
9a78d523b0 Fix: matrices were printed in transposed order in some tooltips 2024-04-11 17:27:24 +02:00
Jeroen Bakker
9c1cba528b OpenGL: Remove Apple specific workarounds
This PR removes apple specific OpenGL workarounds. OpenGL on Apple isn't supported
so they can be removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/120522
2024-04-11 17:25:21 +02:00
Michael Kowalski
65748260f9 Fix: USD: animated primvar import
Fixed bug preventing update of time varying attribute values when
reading USD meshes with the mesh sequence cache modifier.

Pull Request: https://projects.blender.org/blender/blender/pulls/120500
2024-04-11 17:22:44 +02:00
Jacques Lucke
f771f83029 Geometry Nodes: better support for tiny triangles in reverse uv sampling
The reverse uv sampling operation generally fails when there the sample position
is within more than one uv triangle. Unfortunately, the combination of limited
floating point accuracy and very small triangle areas caused this case
sometimes, even if the triangles don't actually overlap. This happens relatively
rarely, but if it does, it causes annoying artifacts. The solution is to only
detect these kinds of overlapping triangles if they have a certain minimum size
and to be more relaxed otherwise.

Pull Request: https://projects.blender.org/blender/blender/pulls/120408
2024-04-11 17:15:55 +02:00