Commit Graph

99757 Commits

Author SHA1 Message Date
Jason Fielder
6504ba980e Metal: Resolve zero initialization in failing math shader tests
Math tests failing in Metal due to non-zero-initialized values
and shader compilation error caused by mutli-component
boolean being implicitly evaluated.

Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/108758
2023-06-12 08:39:11 +02:00
Jason Fielder
91e15ca2fa Fix #107159: Resolve wireframe depth issue in Metal
Bug in Metal when gl_FragDepth is used but not written to by a shader
causing depth-based navigation to fail. Patch ensures gl_FragDepth
is assigned a default value at the current depth from the vertex
shader to catch all edge-cases of this.

Authored by Apple: Michael Parkin-White

Co-authored-by: Michael Parkin-White <mparkinwhite@apple.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/108453
2023-06-12 08:37:50 +02:00
Lukas Stockner
d79524e309 Cleanup: format 2023-06-10 15:37:51 +02:00
Hans Goudey
6a3ca93c7e Fix #108788: Data transfer nearest interpolated broken
Copy and paste mistake in d0705bd697.
2023-06-09 11:07:49 -04:00
Bastien Montagne
44e4b5fe33 Fix (unreported) Object's particle 'foreach_id` potentially accessing other IDs data.
Spotted while investigating #107860: Interactions with timeline after undo makes Blender crash.
Cannot reproduce any more crashes from this report.
2023-06-09 16:58:35 +02:00
Jacques Lucke
5f7be257b8 Fix #107473: make links connected to unavailable sockets invalid
Such links shouldn't be considered at all. In fact, they might be removed
automatically in the future.
2023-06-09 14:14:47 +02:00
Jacques Lucke
b344e4ba61 Fix #108704: missing redraw after timeline scrubbing with temporal denoise
The issue was caused by 037b3f87bd.
2023-06-09 13:49:31 +02:00
Pratik Borhade
9735b8ee71 Fix #106966: Register undo-step when unlinking data-block
When unlinking IDs like GN tree, materials, etc. undo step is not created.
To fix this, assign `undo_push_label` a string value for registering an
undo-step (with the help of `ED_undo_push`)

Pull Request: https://projects.blender.org/blender/blender/pulls/108452
2023-06-09 11:20:41 +02:00
Chris Blackbourn
31ce143569 Fix #108786: Logic errors with pinned islands inside uv packer
Pinning information was accidentally skipped inside of the
UV packing engine because of their ordering.

This was most noticeable when using the "Bounding Box" shape
method, causing some pinned islands to be moved when they
should have been locked in place.
2023-06-09 15:29:43 +12:00
Hans Goudey
fd74b280d9 Fix: Amend previous windows build error fix
Thanks to Ray for helping with this!
2023-06-08 15:55:47 -04:00
Hans Goudey
0dde6ab424 Fix: Build error after previous remesh fix
MSVC requires some coddling to understand these templates.
2023-06-08 15:32:57 -04:00
Hans Goudey
2b45f2d662 Mesh: Fix remesh color attribute propagation, improve performance
Fixes #108730

The call to `CustomData_interp` also interpolated the face corner
topology attributes, which broke the mesh completely. To fix this,
avoid relying on the CustomData API and move the attribute
interpolation to use the attribute API instead. This change also
makes it trivial to support all attribute types in the future.

Also, only retrieve the closest vertex once, instead of doing it
again for every attribute. Combined with building the topology
maps in parallel this approximately doubled the performance
of color attribute propagation in a test with 2 million vertices
and 8 color attributes on both domains (63 to 34 ms).

Pull Request: https://projects.blender.org/blender/blender/pulls/108773
2023-06-08 19:58:13 +02:00
Jason Fielder
cddb53558f Metal: Resolve issues with buffer reading and clearing
Ensure buffer read operations wait for pending GPU work to
complete. This is only required for unit tests, but required to
ensure correct results in all cases. Also adds support for staging
buffer if GPU memory type is private.

Buffer clearing routine added to support values above 1 byte.
The previous buffer clearing functionality using fillBuffer writes
values to each byte, rather than the full 32 bit uint used by the
GPU API.

Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/108757
2023-06-08 18:30:51 +02:00
Leon Schittek
16c9eacf41 UI: Correct default width of toolbars
Correct default initial widths of toolbars

Pull Request: https://projects.blender.org/blender/blender/pulls/108292
2023-06-08 18:27:59 +02:00
Christoph Lendenfeld
2387290e4f Fix #102737: Keyframe jump operator includes hidden curves in Graph Editor
The graph editor has the function to hide the display of FCurves and to only draw keyframes on selected curves.

Both options were not respected when executing the frame jump operator,
meaning it would jump to potentially hidden keyframes.

This patch adds a new operator that is specific to the Graph Editor and that respects those features.

The only possible issue that could arise from this is a slight confusion for the user
why they behave differently between editors.
Especially with only the Graph Editor and the 3D view open.
In general I think it's an improvement and follows the "you can only modify what you see" mantra in blender

Also
Resolves #97701

Pull Request: https://projects.blender.org/blender/blender/pulls/108549
2023-06-08 11:02:19 +02:00
Philipp Oeser
9e598aa0ef Fix #106395: Custom properties dont appear in quick favorites
Issue here was that Quick Favorites use a property's **identifier** when
adding [which is the bare name without brackets etc. from id properties]
but when spawning the actual menu,  `RNA_struct_find_property` expects
the identifier to already include the brackets to know these are id
properties (later on in `screen_user_menu_draw`).

So to solve this, now include the needed syntax when storing the
`bUserMenuItem_Prop` identfier.
Seems the quickest way to append the needed characters is using
`RNA_path_property_py` (not sure if there are better ways to do this).
Also note that we (need to) ignore the actual array index constructing
the string [always pass -1 here] since the index is handled separately [I
tested boolean arrays and these work].

Pull Request: https://projects.blender.org/blender/blender/pulls/108713
2023-06-08 10:37:36 +02:00
Habib Gahbiche
2ac3e55422 Fix #107265 Compositor: Fileoutput Node does not export Z-Depth in 'singlepass' EXR
Remove the option z-buffer from file output node, because it never worked. Changes to manual are here: https://projects.blender.org/blender/blender-manual/pulls/104458

Pull Request: https://projects.blender.org/blender/blender/pulls/108387
2023-06-08 08:14:14 +02:00
Chris Blackbourn
9d25c4aaa6 Fix #104513: UV packing produces different results on x86 vs apple silicon
During uv unwrapping and uv packing, certain floating point algorithms
have extreme sensitivity to round-off errors. These can produce very
different layouts even when given inputs which are only slightly different.

The root cause is that the two main types of CPUs used to run Blender,
namely x86 and Apple Silicon, produce slightly different results on some
math functions, including `sinf()`, `cosf()` and `atan2f()`.

* sinf(0.8960554599761962890625) = 0.780868828296661376953125 (Intel i7)
* sinf(0.8960554599761962890625) = 0.78086888790130615234375 (Apple M1)

This fix, and others that came before it [0], improve accuracy by using
double-precision to hide the differences between the CPUs.

[0] e.g. 0eba9e41bf
[1] See also #107829
2023-06-08 14:23:44 +12:00
Chris Blackbourn
e08dde04c1 Fix: Invalid UV Packing on windows debug build
Uninitialized variables can produce bad results during UV packing,
including UVs that are NaN or infinite.
2023-06-08 13:05:35 +12:00
Bastien Montagne
3405472672 Cleanup: correct comment for .empty. versioning block. 2023-06-07 17:05:09 +02:00
Bastien Montagne
a1e5d57b59 Cleanup/fix: Add file subversion bump to 3.6 for 'unversioned' versioning.
`blo_do_versions_300` still had some 'no version number' versioning code
at its end, should have been handled when 3.6 branch was created.
2023-06-07 17:01:33 +02:00
Germano Cavalcante
981dd12394 Fix #108665: Project 3D cursor on Geometry not working in X-ray
Caused by 98bfa8d458

Occlusion must consider several factors:
- The `Viewport Display` > `Display As` setting  of the object.
- The X-Ray mode of the scene.
- Whether only Snap to Face is being used.
- Whether Snap is set to Cage (always transparent) in edit mode.
- Whether the object is hidden.

In the case of Cage, the final geometry should be utilized for occlusion.
However, to prevent excessive and risky modifications, it was followed
the same approach as before and verified the `Display As` setting of
the object.
2023-06-07 11:56:53 -03:00
Philipp Oeser
7b8bbabece Fix #106155 : Hair dynamics not working well when converted from curves
In particular, the root was not sticking to mesh with hair dynamics.
Reason for this is missing HairKey weight upon conversion (everything
had zero weight). This then can not be corrected (since weight tool does
not allow to paint on roots).

So now, give the hair a default 1.0 to 0.0 weight gradient upon
conversion [which is in line with the default weight distribution for a
hair particle system].

Pull Request: https://projects.blender.org/blender/blender/pulls/108651
2023-06-07 14:49:20 +02:00
Bastien Montagne
7ceb33e06e I18N: Revert part of d95486af95 removing check for main thread.
Part of the checks to see if translating a UI string is allowed or not
is that current thread is the main one. This was a requirement years ago
of the Boost backend for translations.

Not sure whether this can be removed or not now, but it needs to be
carefully checked, done it as its own commit, and not in a beta release
branch. ;)

Sorry for the noise, totally missed this during the patch review
yesterday.
2023-06-07 11:31:34 +02:00
Philipp Oeser
c51467cd4c Fix #108096: UI: copy-paste buttons can change source properties
Pasting numerical array buttons happens with `Ctrl + Alt + V`.
Holding `Alt` also triggers uiSelectContext, so having other nodes/
objects etc. selected while doing this would try to copy the pasted
values back to other objects (possibly to the ones you pasted from) and
that happens relative to the original value, so the value actually
changes.

NOTE: the `Ctrl + Alt + V` shortcut can also be used on non-array buttons, so was an issue for them as well.

To prevent the "copy-to-selected" behavior, refine the `IS_ALLSELECT_EVENT` macro to be more specific.

Pull Request: https://projects.blender.org/blender/blender/pulls/108270
2023-06-07 11:19:05 +02:00
Campbell Barton
c0bfb81e04 Fix material paste setting the nodetree's owner_id to null
Resolves assert in debug builds when changing the material color
after pasting.
2023-06-07 13:32:27 +10:00
Campbell Barton
64ead920a1 Fix #108495: Pasting a material crashes
References to data-blocks in a material were stored in-memory and could
crash if the data-blocks referenced by the material no longer existed
when pasting.

Resolve by using a blend-file for material copy/paste, matching how the
clipboard works in the 3D view-port.

Currently there is no support for including indirectly linked
data-blocks when pasting the material. Instead, data-blocks are restored
by name, by inspecting the current file.

This also fixes a crash where the `SpaceNode::nodetree` could point to
freed memory when pasting a material.

Ref !108496.

Includes contributions by @mont29.

---

Fix back-ported to main [0], including fix [1].

[0]: 5177e2f20b
[1]: 64aa96d421
2023-06-07 13:22:07 +10:00
Chao Li
a56df90931 Fix #108198: Particle hair crash when using Hair Dynamics
`hair_out_mesh` and `hair_in_mesh` implicitly share edges.
In `hair_create_input_mesh()`, edge data of `hair_in_mesh` needs to be
updated and therefore are copied to a new location. In the subsequent
frames, `psys->clmd->clothObject->edges` won't be updated and point to
freed memory block. Therefore, Blender crashes.
By freeing `hair_out_mesh` first,
1. in `hair_create_input_mesh(),` at least edge data copying is avoided
2. `psys->clmd->clothObject->edges` always points to correct memory

However, since it's possible that similar situation will happen again
by adding another strong user to the same `CustomData` in the future,
it is safer to update `psys->clmd->clothObject->edges` for every frame.

Pull Request: https://projects.blender.org/blender/blender/pulls/108480
2023-06-06 18:46:35 +02:00
Hans Goudey
d9dfa782eb Fix: Remove non-threadsafe BMesh assertions in Mesh conversion
Currently this macro modifies faces. It needs to take a const pointer
to the element so it can be run on the same face from multiple threads.
2023-06-06 12:12:26 -04:00
Damien Picard
f07a4c1eed I18n: disambiguate "Fill"
The "Fill" message can be either a noun or a verb. This commit
disambiguates the verb usages for translation through various
translation contexts.

The more involved change is in the generation of keymaps from paint
modes. By default, the enums defining brush names are in the default
context, but this commit changes the ones including a "Fill" item to
"Brush". In order to get the same contexts in the keymap, we introduce
a specific function in `paint.cc` to return the appropriate context
depending on the tool.

Issue reported by Gabriel Gazzán (@GabrielGazzan) in #43295.

Pull Request: https://projects.blender.org/blender/blender/pulls/108561
2023-06-06 16:29:22 +02:00
Damien Picard
d95486af95 18n: Use fmt::format() to replace string concatenation in nodes
The UI code for nodes uses `stringstream`s a few times to format
strings. In some cases it is fine, but in others it makes localization
hard or impossible to do properly, as explained in #92758.

This commit replaces some `stringstreams` by `fmt::format()`, a
library that is already used in other parts of Blender and was
suggested by Hans Goudey (@hooglyboogly) in
[D15996](https://archive.blender.org/developer/differential/0015/0015996/#inline-138440).

Pull Request: https://projects.blender.org/blender/blender/pulls/107260
2023-06-06 16:27:49 +02:00
Philipp Oeser
014825dd26 Fix: UI: cannot copy-paste many array buttons in nodes
This came up in #108096

Reason this fails is the `ui_but_has_array_value` check [which depends
on a property subtype that supports arrays]. The default `VectorBuilder`
has a `PropertySubType` of `PROP_NONE` though, so one possibility
would be to change this to `PROP_XYZ`.

However, RNA should know much better which RNA property buttons
have arrays than the UI code, so use RNA_property_array_check now
(instead of checking particular UI property subtypes).

Pull Request: https://projects.blender.org/blender/blender/pulls/108349
2023-06-06 14:24:45 +02:00
Philipp Oeser
32a349d3a3 Fix #108492 : Compo Track Position node wrong Y for Relative Start/Frame
This seems to be a simple copy/paste error from e0c5ff87b7

Thx @Chris-Thomas spotting this!

Pull Request: https://projects.blender.org/blender/blender/pulls/108504
2023-06-06 13:50:34 +02:00
Nathan Vegdahl
997ad50b49 Fix #106801: loading file with overriden NLA in tweak mode loses action
The root issue was that the `tmpact` field of an object's animation
data wasn't exposed to RNA, and thus wasn't getting overridden.

Pull Request: https://projects.blender.org/blender/blender/pulls/108548
2023-06-06 11:10:58 +02:00
YimingWu
8a0a9ec0c3 Fix #108591: Handle null material adding paint slot
When adding a texture paint slot to an object, the object could have no
material, this patch handles that by checking the material first in
`default_paint_slot_color_get`, if material is null, then it will return a
fallback default color so the operator can proceed normally.

Pull Request: https://projects.blender.org/blender/blender/pulls/108592
2023-06-06 04:13:01 +02:00
Hans Goudey
41d994c9ac Fix #108571: OBJ vertex group import crash
`tot_loop_idx` was increased before it was used to set the set
the vertex group value of the current face corner's vertex.
2023-06-05 20:20:03 -04:00
Campbell Barton
7e7c14ad4c Fix paste flipped creating invalid RNA data paths
- Paste flipped created invalid paths when the size of the name changed
  left -> right: lost the 't' in right.
  right -> left: lost the entire end of the RNA path.

- Correct the fixed buffer size as it may include escaped characters.
2023-06-06 09:35:21 +10:00
Campbell Barton
dd1fe31a74 Cleanup: quiet compiler warnings 2023-06-06 09:34:50 +10:00
Leon Schittek
e6a8c45fd9 Fix #108578: Crash when unlinking input sockets
Fix a mistake in commit 2ce5fc4a3e that caused a crash when detaching
node links from input sockets.

When a link is detached from an input socket, `nodeRemLink` nulls the
`link` pointer of the socket.
So before the next update inputs are linked but don't have a valid `link`
pointer causing the crash, when trying to access the link in
`std_node_socket_draw`.

The introduced check avoids the crash and is more correct since it
doesn't just check one link for multi-input sockets.

Pull Request: https://projects.blender.org/blender/blender/pulls/108623
2023-06-05 20:21:07 +02:00
Damien Picard
745baa788d I18n: extract a few messages
- "Invalid" in transformation messages.
- For three messages, translation occured after a string
- concatenation, so the full message was not found.
  Instead, translate a format pattern and format it afterwards.
- Alembic errors when there is an import type mismatch.

Pull Request: https://projects.blender.org/blender/blender/pulls/108212
2023-06-05 18:10:11 +02:00
Bastien Montagne
855d8d3fa4 Fix #88010: Undo system did not respect memory limit.
Code was plainfully buggy, early-out check in
`BKE_undosys_stack_limit_steps_and_memory` was plainfully wrong.

Also added some more logging for memory limiting code.
2023-06-05 15:23:31 +02:00
Chris Blackbourn
de4fb0e570 UV: Add optimal uv packings using precomputed layouts
Produce optimal layouts for `n` squares, where n == 11, 18, 19 and 26.

With thanks:
* Walter Trump
* Pertti Hamalainen
* Robert Wainwright
* Erich Friedman
2023-06-05 12:06:30 +12:00
Leon Schittek
2ce5fc4a3e Fix #108336: Treat node sockets with muted links as linked
Prevent make links operator from creating links to sockets that are
already linked to a muted link.

The `SOCK_IS_LINKED` flag is used to check if there already is a link
connecting to the socket but when the link is muted, the flag wasn't set
leading to issues in parts of the code that used the flag to check
for any type of connected link.
This commit now also sets `SOCK_IS_LINKED` when links are muted and
adds an additional check in places where different behavior is expected
for muted links.

Pull Request: https://projects.blender.org/blender/blender/pulls/108375
2023-06-03 12:34:58 +02:00
Leon Schittek
cc9c720aae Fix #103068: Link insert offset not working when rotating/scaling nodes
Fix node link insertion during transform not working properly for
rotation and scale.
Inserting nodes by rotating or scaling...
* ...didn't offset the attached nodes.
* ...could lead to unfreed memory.

This commit fixes that by always calling the `NODE_OT_insert_offset`
operator at the end of the node transform operator rather than having
to explicitly append it into a macro operator for each transform
operator.

Pull Request: https://projects.blender.org/blender/blender/pulls/107460
2023-06-03 12:29:57 +02:00
Hans Goudey
214da4b6b4 Fix #108039: Incorrect results when setting custom normals
The solution using `reverse_index_array` didn't work because it lost the
order that the corners were processed in (the order around the vertex).
This is important when setting custom normals because the process
sets sharp edges when the normal of the current and previous corner
is too different.
2023-06-02 21:18:12 -04:00
Julian Eisel
4832114d60 Fix #107870: Movie Clip Editor hangs in "Clip" view
Because of how the Clip Editor managed region state for different view
modes before region polls were introduced (fa0f295b53), regions could be
written to files in a state that's not valid for displaying them. State
for clip editors written to files is corrected with versioning now.
2023-06-02 18:19:23 +02:00
Nathan Vegdahl
f63c56e05c Fix: action's actual users and recorded user count could diverge
The user count decrement and unassigning the action were split
between two different conditionals, which weren't guaranteed
to both execute/not-execute together.
2023-06-02 16:03:26 +02:00
Bastien Montagne
d847851000 Fix #108285: Crash in Outliner when using RNA ID remapping API call.
RNA API call was not updated UI in anyway.
2023-06-02 15:26:04 +02:00
Bastien Montagne
5ce0f80ed6 Fix #108285: Remap Users operator doesn't work on Objects.
Objects were excluded from the ID operation, as originally they had
their own entry in their own menu. Joys of nightmare tools handling in
the Outliner...
2023-06-02 15:26:04 +02:00
Sietse Brouwer
a784a65dbe Fix #108473: unreliable auto-normalize results when weight painting in GPencil
Painting weights in Grease Pencil with the auto-normalize option enabled,
gave unpredictable results when vertex groups with a weight of zero
were involved.
This patch resolves the issue. Vertex weights of zero are excluded from
auto-normalization. Which is a better fit for the Grease Pencil workflow,
where weights are mostly painted from scratch since the 'parent to
armature with automatic weights' operator doesn't give good results.

Pull Request: https://projects.blender.org/blender/blender/pulls/108524
2023-06-02 15:04:19 +02:00