Commit Graph

135524 Commits

Author SHA1 Message Date
Campbell Barton
e5dfc814e9 CMake: check both C & C++ compiler versions
It was possible for an unsupported clang/gcc version to be used,
this seems the likely cause of errors in #120879.
2024-04-26 18:01:51 +10:00
Laurynas Duburas
12df5a68ba Curves: support transforming Bezier handles in edit mode
Allows user to transform Bezier handles.

Pull Request: https://projects.blender.org/blender/blender/pulls/120222
2024-04-26 09:32:26 +02:00
Campbell Barton
c42eeb0c38 Cleanup: avoid unnecessary buffer copy to access the filename 2024-04-26 16:39:11 +10:00
Campbell Barton
43121bcb67 UI: disable TTC & OTC fonts in the file selector
These are not fully supported, users who load these will not be able
to access all the faces within the TTC/OTC.

Existing uses of TTC/OTC won't be blocked, these are just not shown as
supported fonts in the file selector. Addresses #44254.

Ref !121060
2024-04-26 16:19:10 +10:00
Philipp Oeser
4d49c78e74 Fix: weight and vertex paint radial symmetry wrong with mirror
Both vertexpaint and weightpaint would only apply all of radial symmetry
for the "initial stroke".
When going over the combinations of symmetry axis, some of radial
symmetry would be skipped, e.g. when mirroring from right to left with
`Mirror X` turned ON, a dab on the right would have radial symmetry from
that point, and an additional dab on the left from mirroring (but the
mirrored dab would not have radial symmetry on its own).

This does not lead to symmetric results at all, sculptmode also does not
behave that way (there, radial symmetry is performed on the mirror axis
as well).

Now do the same thing as in sculptmode to get symmetric results when
using mirror and radial symmetry together.
Also use the utility function to skip invalid symmetry iterations.

Stumbled over this when looking into #120843

Pull Request: https://projects.blender.org/blender/blender/pulls/120931
2024-04-26 07:51:09 +02:00
Philipp Oeser
b47242314f Fix #120843: Brush texture not mirrored in vertex paint mode
While using texture on the brush in vertex paint mode (neither generated
or imported texture), the brush texture is sampled based off of the
unmirrored coordinate.

To resolve, use the same method that sculptmode uses in
`sculpt_apply_texture` (flipping the coordinate over the mirror axis).

Pull Request: https://projects.blender.org/blender/blender/pulls/120935
2024-04-26 07:49:36 +02:00
Philipp Oeser
b7772cfa8b Fix #120836: Armature Symmetrize mirror constraint X track axis
Previously, the track axis would remain X on the other side. It should
be flipped to -X to give a symmetrical result.

Building upon ee43cf5722, this adds support for flipping the track
axis in certain constraints, namely:
- Track To
- Locked Track
- Damped Track
- Shrinkwrap

Pull Request: https://projects.blender.org/blender/blender/pulls/120979
2024-04-26 07:48:56 +02:00
Philipp Oeser
e816b481e0 Fix #121004: bmesh.ops.dissolve_limit wrong in certain cases
Exposed by 6c774feba2

`BM_mesh_decimate_dissolve_ex` sets up `DelimitData` with layer offset
(start), size and end so that `bm_edge_is_contiguous_loop_cd_all` can
check a range of edges for being contiguous.

The way `cd_loop_offset_end` is calculated is wrong though, it does not
take the actual start into account (this has to be added to fix the
bug). When it is wrong, it can happen that start and end are the same,
so no check actually takes place and no delimiting edges are found.

It seems that prior to 6c774feba2 the customdata layer always had an
offset of zero, so never really showed in practice (at least I couldnt
make it break in 3.4), but after 6c774feba2 we can at least observe the
following:
- when creating a bmesh, an offset would to the uv layer would still be
zero in my tests
- however, as soon as we iterate loops of a face (as done in the
report), we get an additional layer `CD_BM_ELEM_PYPTR`
- this then changes the offset
- `BM_uv_map_get_offsets_from_layer` seems to do the right thing afaict

So to resolve, just add the "start" offset to the end, to get the right
range.

NOTE: there is a very similar `DelimitData` used in
`bmesh.ops.join_triangles` and the way in which `bm_edge_delimit_cdata`
sets up te range is exactly like what this PR proposes.

Pull Request: https://projects.blender.org/blender/blender/pulls/121033
2024-04-26 07:47:57 +02:00
YimingWu
71e7775bcb Fix: Mantaflow: move allocation after early return
Varibale `pic` is allowcated before an early return, which could cause
a memory leak. Now fixed.

Pull Request: https://projects.blender.org/blender/blender/pulls/121104
2024-04-26 06:31:22 +02:00
Campbell Barton
cb93603fb3 Cleanup: remove script-id for Python command line error message
While additional context is typically useful to include,
this is such a corner-case that it's not expected script authors
would run into this during regular development.
2024-04-26 14:04:58 +10:00
Campbell Barton
6456fa3b9e Cleanup: use C-style comment blocks 2024-04-26 13:55:38 +10:00
Campbell Barton
56f80ebbcd UV: avoid small allocations in PackIsland::finalize_geometry
Use the memory arena for convex vertices as well as the index buffer.
2024-04-26 13:55:37 +10:00
YimingWu
b9879b0ff7 Fix: memory leak in clip_buttons.cc
uiTemplateMarker could return early with a MarkerUpdateCb not freed,
now fixed.

Part of #120767

Pull Request: https://projects.blender.org/blender/blender/pulls/121101
2024-04-26 04:01:34 +02:00
Iliya Katueshenock
095d37c186 Fix #120592: File output node not showing up in search
Pull Request: https://projects.blender.org/blender/blender/pulls/121096
2024-04-25 21:53:16 +02:00
Hans Goudey
e3e52ccc00 Cleanup: Unused variable warning in release build 2024-04-25 15:28:11 -04:00
Hans Goudey
fdaf7a5db1 Cleanup: Remove unnecessary sculpt bose brush callback data struct
Since the flood fill callback uses FunctionRef now, there is no need to pack
the relevant arguments into a separate struct. Though there are a lot of
arguments now, there is one less indirection which hels when clicking
through the code.
2024-04-25 15:20:26 -04:00
Hans Goudey
5c73a543fa Cleanup: Use const argument to sculpt accessor functions 2024-04-25 15:20:25 -04:00
Hans Goudey
c4763443b0 Cleanup: Remove unnecessary sculpt flood fill lambda argument 2024-04-25 15:20:25 -04:00
Hans Goudey
fc1a4647cf Cleanup: Use C++ types for pose brush segments
Use unique_ptr, Array, float3, and references for stored pose brush segments.
2024-04-25 15:20:25 -04:00
Hans Goudey
5c70a64646 Cleanup: Use C++ matrix type for sculpt pose segment 2024-04-25 15:20:25 -04:00
Hans Goudey
a07dbf59b2 Cleanup: Use C++ Set for sculpt pose brush visited face sets 2024-04-25 15:20:25 -04:00
Hans Goudey
d40ee0af34 Cleanup: Return sculpt flood fill utility struct by value 2024-04-25 15:20:25 -04:00
Hans Goudey
f32a8bdac6 Fix #121039: Pose brush face sets FK rotation origins broken
Caused by a683d1b0c6 which didn't clear the flood fill like
used to happen in the "free_fill" function.
2024-04-25 15:20:25 -04:00
Ray Molenkamp
5b24af5ea5 CMake: Windows: suppress Clang-cl warnings
Building with clang on windows isn't an officially supported scenario
but it's something we'd like to keep working, but as it doesn't see
regular use, things tend to bit rot a bit.

0136289cb6 got things back into somewhat working order however the build
log came in at a little over 5.5GiB emitting a total of 11.787.294
warnings (827.847 unique), it was getting to the point where printing
all warnings, was a rather significant contributor to the total build
time.

this PR, suppress every single warning out of that build, one could
argue that some of these warnings are actually genuine and should be
enabled, and dealt with, the thing is, building with clang isn't
supported as of now and I honestly lack the time right now to sift
though this barrage of data.

given MSVC, Clang on mac and GCC on linux currently all build without
warnings, having clang on windows match that baseline seems like a
reasonable thing to do.

I left some notes in cmake flagging the potential cleanup, and added
counts of how often each warn occurred (The one off warns are much more
likely to lead to a genuine bug fix than the ones that produce a whole
lot of noise) so if someone wants to spend some effort they can do so
effectively.

The suppression is guarded with clang on windows specific guard and
should not affect any other platforms.

Pull Request: https://projects.blender.org/blender/blender/pulls/121085
2024-04-25 20:32:20 +02:00
Lukas Tönne
91f1f3fc06 GPv3: Implementation of sculpt mode tools
This implements all the sculpt tools in Grease Pencil 3.

UI changes in the 3D view header and keymap entries for sculpt mode are
still minimal, more entries should be added once the relevant operators
are supported.

A set of utility functions and a shared base class
`GreasePencilStrokeOperationCommon` for sculpt operations has been added
to make individual operations less verbose.
The `GreasePencilStrokeParams` struct bundles common arguments to reduce
the amount of boilerplate code. The `foreach_editable_drawing` utility
function takes care of setting up the parameters and finding the right
drawings, so the tool only has to modify the data. Common features like
tracking mouse movement and inverting brush influence are handled by the
common base class.

Most operations are then relatively simple, with the exception of the
Grab and Clone operations.
- __Grab__ stores a stroke mask and weights on initialization of the
  stroke, rather than working with the usual selection mask.
- __Clone__ needs access to the clipboard, which requires exposing the
  clipboard in the editor API.

Pull Request: https://projects.blender.org/blender/blender/pulls/120508
2024-04-25 20:20:27 +02:00
Jesse Yurkovich
fea1d1d71f Fix: Unintentional move from constant in retrieve_attributes_for_transfer
Moving a constant variable results in a copy occurring instead. This
looks to have been an accidental change as part of ea937b304d.

A few tools will warn about this:
`Warning	C26478	Don't use std::move on constant variables. (es.56)`
`Warning	cpp:S5415	"std::move" should not be called on a const object.`

Pull Request: https://projects.blender.org/blender/blender/pulls/121063
2024-04-25 18:02:50 +02:00
Clément Foucault
9a530906cf Fix: EEVEE-Next: Metal shader compilation
Caused by implicit cast to float vector.
2024-04-25 17:33:23 +02:00
Pratik Borhade
f1d8b56a8e Fix #121061: Crash when sculpting brush has Occlusion enabled
corner_verts span is empty when occlusion is enabled. So assign value to
it in `SCULPT_vertex_is_occluded`

Pull Request: https://projects.blender.org/blender/blender/pulls/121071
2024-04-25 17:11:40 +02:00
Christoph Lendenfeld
c464426475 Refactor: swap handle logic in Graph Editor transform code
This PR changes the `swap_handles` variable of the
`BeztMap` from `short` to `bool`.
The only reason it was a `short` was so that 0 could be
interpreted as "not checked" within the sorting loop.
Instead, I moved the checking for swapping to a separate loop.
That means the `BeztMap` array needs to be traversed one more time,
but given sorting might already do that multiple times that won't be
a performance issue
(plus we don't have the `if` within the sorting loop potentially messing up branch prediction).

In addition to that this PR also removes `prev_ipo` and
`current_ipo` from the `BeztMap` struct. Those were never used.

This is also partly a fix to restore 3.6 behavior.
With the move to C++, `swap_handles` was never initalized,
so the logic ` if (bezm->swap_handles == 0)` would always be false.
That resulted in the following behavior when
**rotating a bunch of keys 180deg** around their common center.

Pull Request: https://projects.blender.org/blender/blender/pulls/121076
2024-04-25 16:52:16 +02:00
Clément Foucault
b49333a7a0 Fix: EEVEE-Next: Fix spherical harmonic clamping
The previous implementation was not considering each
channel magnitude, which was not rotationally
invariant. This fixes changes in lighting as the world
rotates (and if clamping is enabled).
2024-04-25 16:45:59 +02:00
Clément Foucault
5938ab099d Fix: EEVEE-Next: Correct octahedral texel solid angle
This fixes the slightly incorrect solid angle by using
the symetries of the mapping. This avoids orientation
dependent lighting. The computation is not much more
expensive.
2024-04-25 16:45:59 +02:00
Brecht Van Lommel
2a65681dea Fix #121069: Crash loading EEVEE byte lightcache after recent refactor 2024-04-25 16:15:41 +02:00
Christoph Lendenfeld
78583bf22e Anim: Add option to show modified property on slider
This PR adds the feature of displaying which property is modified
to the slider GUI.

This is useful in cases like #117287
where the slider can modify different properties during the modal operation.

The string is optional and will be empty by default.

This label is placed to the left of the slider where the percentage was usually located.
The percentage has now been moved to the right.

Pull Request: https://projects.blender.org/blender/blender/pulls/119920
2024-04-25 15:48:17 +02:00
Campbell Barton
6d1ffc519f Cleanup: remove unused GizmoGroup reports 2024-04-25 23:24:47 +10:00
Campbell Barton
cb164dabab Cleanup: avoid redundant call to BLI_heap_clear
Add an assertion that the heap is always cleared.
2024-04-25 23:21:32 +10:00
Sietse Brouwer
5220caeabb GPv3: Weight Paint tools (Draw, Blur, Average, Smear, Sample weight)
This PR implements the Weight Paint tools for GPv3.

Tools:
- Draw, for assigning weight to stroke points
- Blur, smooths out weight using adjacent stroke point weights
- Average, smooths weight using the average weight under the brush
- Smear, like finger painting, drags weights in the direction of the brush
- Sample weight, sets the brush weight to the weight under the cursor

The weights are assigned to the active vertex group. When there is no
active vertex group, a group is automatically created.

When the Auto Normalize option is enabled, it is ensured that all
bone-deforming vertex groups add up to the weight of 1.0.
When a vertex group is locked, it's weights will not be altered by
Auto Normalize.

The PR already supports multi frame editing, including the use of a
falloff (defined by a curve).

The implementation is in accordance with the Weight Paint tools in GPv2.

Pull Request: https://projects.blender.org/blender/blender/pulls/118347
2024-04-25 15:21:14 +02:00
nutti
07f2a0ee9f Python API: Fix invalid Python syntax in Python API docstrings
Ref: !121074
2024-04-25 23:08:35 +10:00
Campbell Barton
d291ec37e0 Cleanup: remove null check in blo_filedata_free
All callers except for one were already checking, add ATTR_NONNULL
attribute to functions that take a FileData to make it clear that
it's not expected to be null.
2024-04-25 23:03:17 +10:00
Falk David
fe0e2907b3 GPv3: Remove OB_MODE_PAINT_GREASE_PENCIL flag
This reverts part of 36cda3b3116acba3b895daf68689f8af01b62392
and replaces the use of `OB_MODE_PAINT_GREASE_PENCIL`
`OB_MODE_PAINT_GPENCIL_LEGACY` flag instead.
The `OB_MODE_PAINT_GREASE_PENCIL` is removed.

The `GREASE_PENCIL_OT_draw_mode_toggle` operator is removed
and the `GPENCIL_OT_paintmode_toggle`  operator is adapted to
work with GPv3.

Pull Request: https://projects.blender.org/blender/blender/pulls/121027
2024-04-25 14:23:46 +02:00
Pratik Borhade
1f10100f46 Fix: memory leak in sequencer_preview_add_sound
Move memory allocation of `audiojob` after if/else condition. Otherwise
there is possible chance of memory leak due early exit from that
function.

Part of #120767

Pull Request: https://projects.blender.org/blender/blender/pulls/121006
2024-04-25 13:24:49 +02:00
Bastien Montagne
679a05a02c Core: lib_query: Replace raw function pointer by FunctionRef for callback.
Besides using modern code, this also allows to use 'capturing' lambdas
as callbacks here.
2024-04-25 12:38:23 +02:00
Jacques Lucke
de7ea7e60d Fix: don't allow zero bandwidth in sdf grid
Setting the bandwidth to zero caused a crash.
2024-04-25 12:13:11 +02:00
Christoph Lendenfeld
dafcb353b8 Fix #120950: Graph Editor curve drawing artifacts with normalized display
The drawing code in the Graph Editor reduces the points drawn by checking the pixel distance.
The calculation for the pixel distance didn't take the normalization into account though, so
in certain scenarios points would be skipped that shouldn't be skipped.

The fix is to pass the normalization factor into the pixel distance calculation.

Pull Request: https://projects.blender.org/blender/blender/pulls/121070
2024-04-25 11:50:55 +02:00
Jacques Lucke
3f2c4db951 Curves: support more curve type conversion options in edit mode
This adds a new `Handles` checkbox to the conversion operator that
affects how the conversion works in the following cases:
`Bezier -> Catmull Rom / Poly / Nurbs` and `Catmull Rom -> Nurbs`.
If enabled, three control points are added for each original control
point, otherwise only one.

-----

The images show the effect of the toggle. The top result is always the one with handles and the bottom one without.
* `Bezier -> Poly`
  ![image](/attachments/c4833568-fb8a-415e-b4fc-a8af2002ded8)
* `Bezier -> Catmull Rom`
  ![image](/attachments/df62e4c0-1a88-4f04-aa82-506bc40765a2)
* `Bezier -> Nurbs`
  ![image](/attachments/3b78d49d-c840-4c15-a342-050fb1f5c3f5)
* `Catmull Rom -> Nurbs`
  ![image](/attachments/de9a4c08-d442-4f97-a0e0-6393b0f0e6de)

Pull Request: https://projects.blender.org/blender/blender/pulls/120423
2024-04-25 10:56:43 +02:00
Iliya Katueshenock
fa66b52d0a Nodes: tooltips for value of dangling reroute node
Dangling reroute nodes have no source of value. For that reason, such reroute nodes
are ignored by geometry nodes. Other node systems still have to handle this case
more explicitly. To users this behavior generally makes sense, but it's also not completely
obvious. Now, there is a new tooltip when hovering over dangling reroute nodes that
mentions how those work.

Pull Request: https://projects.blender.org/blender/blender/pulls/120851
2024-04-25 10:48:06 +02:00
Campbell Barton
7337d97e13 Fix #120231: Unwrap can crash with shape_method='CONVEX'
There was no check for a convex hull with 1-2 points,
causing unwrap to crash on degenerate faces.

Regression caused by [0] (fix for #115061), which hid this bug.

[0]: 0053de6556
2024-04-25 18:02:33 +10:00
Campbell Barton
e8229fccba Fix #120551: Loop Cut tool fails when Select Circle tool is active
Allow pre-select gizmos to be "highlighted" so they can override
the fallback tool key-map items.
2024-04-25 16:11:19 +10:00
Clément Foucault
2a0074c930 Fix: EEVEE-Next: Compile error on Nvidia drivers
Fixes #121057
2024-04-25 08:00:14 +02:00
Guillermo Venegas
5c2d412a29 Fix image sequence detection to account for the number of digits
Previously when opening 2 images like `['img1.png' ,'img002.png']` the
sequence detection will open this images as a single image sequence.
However internally this is not a supported sequence.
To fix that this changes will also differentiate sequences
by their digit count, so if a group of images like:
`['img1.png','img2.png' ,'img002.png','img003.png']`
are open now it will create 2 images sequences instead of just one.

Ref: !120185
2024-04-25 13:04:23 +10:00
Campbell Barton
0f93f70076 Cleanup: quiet unused variable warnings 2024-04-25 12:09:31 +10:00