Commit Graph

114726 Commits

Author SHA1 Message Date
Kévin Dietrich 344a8fb3d4 Fix T97086: corrupted UVs with GPU subdivision
When multiple objects are in edit mode, UVs for the objects, except for
the first one (in rendering order) appear corrupted. The corruption is
because the UVs are not evaluated as the compute shader is not bound,
thus we read unitialized memory.

We keep track of the currently bound shader in the GPU context in order
to avoid unnecessary shader switches in case the same shader is used in
consecutive calls. However, the shader used by the OpenSubdiv evaluator
is not part of Blender and therefore not tracked via the GPU context.

When extracting UVs for multiple objects, we only ever run a single
shader (FVar evaluation). However, between the compute calls, we also
call the OpenSubdiv stencil evaluation shader, which uses `glUseProgram`
modifying the current program, outside of our control, which then also
unbinds the Blender compute shader making the compute dispatch fail ("No
active compute shader").

The fact that extracting the UVs for the first rendered object works is
because another (Blender) shader was bound in the GPU context prior to
our binding of our evaluation shader.

To fix this, we remember, in the OpenSubdiv evaluator, the current
program so that it can be reset after the stencil program is done.

Differential Revision: https://developer.blender.org/D15064
2022-05-31 12:15:02 +02:00
Hans Goudey 18a17d4291 Fix T98403: Crash applying modifiers on non-mesh objects
The operator assumed it was called on a mesh object, which has
mostly been the case because of lack of support for other object
types, but the new curves object is supported, which is the situation
in the report.

Differential Revision: https://developer.blender.org/D15063
2022-05-31 10:05:48 +02:00
Julien Kaspar 1ebc0ebdc0 UI: Correct sculpt tooltips
Some of the tools in sculpt mode were still referring to the previously  experimental sculpt vertex colors.
They should instead refer to color attributes.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D15073
2022-05-31 09:51:26 +02:00
Dominik Fill c8cef83fae Fix T96157: Make size of Frame Node label independent from Line Width
This commits corrects the calculation of the Frame Node label size,
making it independent of the 'Line Width' user preference.

Since `U.dpi` is actually DPI divided by `U.pixelsize` and `U.pixelsize`
is calculated from line-width multiplying by `U.pixelsize` undoes
the connection between line-width and label size.
It now stays the same, regardless of the line-width setting.

Reviewed By: Julian Eisel, Harley Acheson

Differential Revision: https://developer.blender.org/D14338
2022-05-30 19:19:07 +02:00
Antonio Vazquez 6856290514 Fix T98253: Gpencil Lineart crashes when undoing creation of linked copy
These lines were not used now because the handling of copy data has changed.

Assigning the `eval` data can produce unexpected result, especially since everywhere ID_RECALC_TRANSFORM is used, we also do a copy on write. That should take care of `ob->data` for the eval object.
2022-05-30 16:39:27 +02:00
Dalai Felinto de610d06a6 Cleanup: make format 2022-05-30 16:17:25 +02:00
Dalai Felinto afd81e26af Fix T98446: Spreadsheets filter not working on Name column 2022-05-30 16:11:52 +02:00
Dalai Felinto a9a4bcc3d1 Fix building: stub for OpenSubdiv
Building problem introduced on 24e74f8bef. It affects `make lite`
and other builds that skip OpenSubdiv.
2022-05-30 16:10:22 +02:00
Antonio Vazquez 70171cdfdf Fix T98488: GPencil weightpaint not visible if first point is no weight
The problem was because the check was done with the total weights of the first element of the array and if this was null or 0, the weights were not duplicated.

As this bug was introduced fixing T97150 due a problem in the weight data, now instead to duplicate all stroke data to create the perimeter for the PDF/SVG, only the points are duplicated because the weights are not needed. This fix the original bug and also reduce the memory used by the export process.
2022-05-30 15:42:08 +02:00
Brecht Van Lommel 24e74f8bef Fix T98449: Cycles crash changing frame after recent changes
Subdivision did not properly update when evaluating first without and then with
orco coordinates. Now update the subdivision evaluator settings every time, and
reallocate the vertex data buffer when needed.

there is an additional issue in this file where orco coordinates are not
available immediately on the first frame when they should be, and only appear
on the second frame. However that is an old limitation related to the depsgraph
not getting re-evaluated on viewport display mode changes, here we just fix the
crash.
2022-05-30 14:06:03 +02:00
Joseph Eagar f1c29b9bd3 Fix T98368: Shading artifacts on paint/mask anchored sculpt brushes
I'm not sure what is causing this.  Vertex normals get corrupted
for paint and mask sculpt brushes but not the normal geometric
ones.  Since we don't actually need to recalculate normals
here to begin with I've just disabled it.  The code now
calls the appropriate node mark update function based on
the sculpt tool.
2022-05-30 02:48:04 -07:00
Jacques Lucke a7bda30ca8 Curves: make tangent computation more robust
Previously, when there were multiple curve points at the same or
almost the same position, the computed tangent was unpredictable.

Now, the handling of this case is more explicit, making it more
predictable. In general, when there are duplicate points, it will just use
tangents from neighboring points now.

Also fixes T98209.

Differential Revision: https://developer.blender.org/D15016
2022-05-30 10:12:06 +02:00
Johnny Matthews 32bf6455a0 Fix T98400: Duplicate node crash 2022-05-29 14:19:05 -05:00
Germano Cavalcante 49368c734b Fix (unreported): cyclic snap of curve handles
The logic of skipping selected handles was inverted
and confusing.
2022-05-28 22:24:43 -03:00
Jesse Yurkovich 86baf6e3ed Re-fix T97366: Support single-file UDIMs
The original fix for T97366 was too restrictive and breaks real-world
cases of single-file UDIM textures. See D13297 for an example.

This patch effectively reverts the original fix and instead fixes the
downstream code to accept single-file ranges as necessary.

Note: This means it is very important for users to make use of the
"UDIM detection" option during `image.open` or drag n' drop scenarios in
order to declare their intent when loading their files.

Differential Revision: https://developer.blender.org/D14853
2022-05-27 22:11:52 -07:00
Brecht Van Lommel 967f96ee2e Fix T98270: Cycles shows black with color values > 65K in GPU render
After recent changes to Nishita sky to clamp negative colors, the pixels ended
up a bit brighter which lead to them exceeding the half float max value. The
CUDA float to half function seems to need clamping.
2022-05-27 20:14:15 +02:00
Julian Eisel b45f410b31 Fix T97790: Crash in Outliner "Blender File" mode with old files
IPO data-block types are deprecated since 2.5. Don't show them in the
Outliner at all.

Differential Revision: https://developer.blender.org/D15049
2022-05-27 17:03:25 +02:00
Jagannadhan Ravi 74cf22c42c Fix T96397: Cycles missing HIP support for gfx1035 devices
Such as AMD Radeon RX 6700S.

Differential Revision: https://developer.blender.org/D13495
2022-05-27 16:59:40 +02:00
Brecht Van Lommel 3a4f2131c2 Fix Cycles not rendering byte precision vertex domain colors
Code was not yet updated to use generic attributes for vertex colors. This also
makes generic attributes work for adaptive subdivision.
2022-05-27 16:55:49 +02:00
Antonio Vazquez bf6aa5d63d GPencil: Fix unreported Bake animation error
This bug was introduced in commit https://developer.blender.org/rB5188c14718c56e4d088d3c5bb3ce3ed9ed8b7bdc because the object transform was not applied when baking the object.

Thanks to @frogstomp for the head up.
2022-05-27 14:22:09 +02:00
Julian Eisel 5417b8434a Fix T97918: Crash when changing "Frame All" shortcut from context menu
After removing the default 'Home' shortcut for "Frame All", a NDOF (3D
Mouse) default shortcut was still available for the operator. The event
filtering introduced in 4357fb63db was missing the NDOF filtering
logic. So while the context menu correctly found the NDOF keymap item,
its actual shortcut change/removal code incorrectly filtered out the
NDOF keymap items and thus failed to find the item.
2022-05-27 12:55:24 +02:00
Sergey Sharybin e5c65709a2 Fix T98379: Wrong evaluation when deactivating/activating collections
This is a regression caused by a230445cae.

The internal cause of the issue was that the synchronization component
was no longer tagged as visible (and hence not evaluated) as it not
connected to any directly visible IDs.

Changed the logic in a way that if any component of an ID is evaluated
the synchronization component will be evaluated as well.

The naming of the flag in the component node is a bit confusing, but
for the simplicity of the change for the upcoming release left it
unchanged.
2022-05-27 12:09:14 +02:00
Bastien Montagne 5625a21fc7 Fix fuzzy ID deletion user count check.
`BKE_id_delete` should only check for consistency of user count with
regards to the tags and flags of the ID, not 'protect' nor even warn in
case a 'fake user' ID is deleted (such higher-level checks are to be
handled by higher-level code).

Also replace the assert + debug print by a CLOG error, this avoids
'assert crash' while still failing tests, and always producing a useful
message.

Fixes T98374 and T98260.
2022-05-27 10:49:53 +02:00
Kévin Dietrich bf53956914 Fix T98385: Color attributes not working with GPU subdivision
Contrary to coarse extraction, GPU extraction uses the same buffer for
the coarse data, only the final GPU buffer needs to be offset.
2022-05-26 15:12:30 +02:00
Kévin Dietrich 55e3930b25 Fix T98392: GPU subdivision crash with knife tools
The face dots normals may not be always requested, thus leading to a
crash by null pointer dereference.
2022-05-26 14:52:45 +02:00
Campbell Barton 38a2576ace Fix display error after sorting mesh elements
Sorting faces caused the tessellation data to be outdated,
making faces show the wrong materials.

Re-calculate tessellation when re-ordering faces.
2022-05-26 21:23:19 +10:00
Campbell Barton 790fe55c52 Fix Blender 2.7x keymap faulure to select & drag multiple nodes
A follow up on the fix for T98145 for the 2.7x keymap.
2022-05-26 21:06:44 +10:00
Campbell Barton 3131107ba3 Fix T94857: 'Gizmo Operator' from python templates spins when dragged
Callbacks used in the gizmo operator template don't support updating
while being dragged, set the EXCLUDE_MODAL flag so the offsets
aren't accumulated. Also fix the offset being applied twice to the
move gizmo.
2022-05-26 15:53:17 +10:00
Bastien Montagne 841a354412 Cleanup: Link/append: Remove useless proxy handling code.
This was not effectively doing anything anymore, time to remove it.
2022-05-25 15:09:52 +02:00
Kévin Dietrich a072a264b6 Fix vertex format for mesh attributes with GPU subdivision
A global variable was mistakenly used here which would accumulate the
vertex attributes (leading to an assertion failure after a while), use
the wrong number of components depending on the attribute data type,
among other issues.
2022-05-25 14:51:29 +02:00
Clément Foucault c27be07d89 Fix T98365: Overlay: Blender 3.2.0 Beta crashes on startup
This was caused by a wrong mass rename on a piece of code used only on
older hardware.
2022-05-25 14:39:58 +02:00
Kévin Dietrich 98b66dc040 Fix T96080: hiding elements does not work with GPU subdiv
Faces, edges, and vertices are still shown when GPU subdivision is
actived. This is because the related edit mode flags were ignored by the
subdivision code.

The flags are now passed to the various compute shaders mostly as part of
the extra coarse data, also used for e.g. selection. For loose edges, a
temporary buffer is created when extracting them. Loose vertices are
already taken into account as it reuses the routines for coarse mesh
extraction, although `MeshRenderData.use_hide` was not initialized,
which is fixed now.
2022-05-25 14:31:06 +02:00
Bastien Montagne cb3b9358bf Fix T98344: Crash opening file with proxy.
Weird file where the proxy object has a `proxy_group` pointer, which
does not instantiate any collection...
2022-05-25 11:22:17 +02:00
Bastien Montagne a4e7a5aa4f Fix link/append code not properly setting correct ID in context items.
When appending an already linked data, `BKE_blendfile_append` would not
properly substitute the `item->new_id` pointer of link/append context
items with the local duplicate of the linked ID.

This would cause drag'n'drop of assets to work incorrectly in some
cases. Fixes part of T95706 and T97320.
2022-05-25 10:32:34 +02:00
Campbell Barton aab947eb46 Fix T98349: Knife project resulting selection is wrong
Regression in [0] which removed the call to BVH-tree recalculation
before calculating the selection.

Instead of recalculating the BVH-tree, postpone recalculating mesh data
until after the selection has been calculated.

[0]: 6e77afe6ec
2022-05-25 17:16:25 +10:00
Campbell Barton 26c6ec5594 Cleanup: remove context argument from EDBM_mesh_knife
Added in [0] but isn't needed as all needed variables are in the
ViewContext. Avoid passing in the context is it makes debugging
issues with MESH_OT_knife_project more difficult to investigate since
it's possible values written to the ViewContext are ignored.

[0]: 6e77afe6ec
2022-05-25 17:16:23 +10:00
Jeroen Bakker 08324ba2c1 Fix T98350: Crash when using clone tool + sequence.
When no image user is known the last used frame of the image is used to
read a frame. When partial updating an image there is always an image user
that would use a zerod out image user, meaning the frame number is set to 0
when using the clone tool.

This fix syncs the frame with the last used frame of the image to ensure
that the buffer exists. There is a bailout in the overlay_edit_uv.c.
2022-05-25 08:46:18 +02:00
Jeroen Bakker e69f3d7db1 GPU: Updated comment about HQ normals workaround. 2022-05-25 08:03:52 +02:00
Jeroen Bakker 603d3c90a5 GPU: Fix issue that negated HQ normals workaround.
Thanks Germano for pointing it out.
2022-05-25 08:00:53 +02:00
Julian Eisel bc3dbf109c Fix T95706: Material asset not applied if appended and then linked
8f79fa9c67 was an attempt to fix this already, but it didn't quite
work. Problem was that the tooltip was messing with the drop-box and
operator properties, setting the name property for its own internal
logic. This name property would then be used rather than the session
UUID to query the material, which gave the wrong material (linking can
result in multiple IDs of the same type with the same name). A followup
commit will further sanitize this.
2022-05-24 15:22:18 +02:00
Julian Eisel 463077a3d5 Fix possible lingering around of ID after asset dropping failed
More and more of the drop operations are being switched to use the ID's
session UUID rather than the name, but the cleanup after a drop operator
was cancelled assumed they would set the name. They will now first
attempt to use the session UUID and fallback to the name if needed.
2022-05-24 15:21:38 +02:00
Bastien Montagne a40a269062 Fix (studio-reported) bad re-assigning of new liboverride from ID template widget.
Shift-click on the 'linked' button in an ID template widget would fail
to properly remap that usage of the linked ID to the newly created
liboverride.
2022-05-24 15:03:04 +02:00
Sybren A. Stüvel 10aa2fa902 Redraw Motion Paths panel after creating motion path
Add notifier such that the Motion Paths panel in the Object Properties tab
gets redrawn, after using the Create Motion Path button.

The reason it didn't update was that the button actually triggers a popup,
and then executes in the context of that popup. It now actually emits a
`ND_DRAW_ANIMVIZ` notifier, and ensures that the panel redraws on that.
2022-05-24 14:57:30 +02:00
Jacques Lucke f29ff7fb7e Fix T98152: Named Attribute node changes data type for non-existant attributes
Skip changing the data type in the node if it is not known.
2022-05-24 11:55:44 +02:00
Jeroen Bakker d1340e1bb2 Fix T97828: Split normals not visible on certain platforms.
It is a know issue that split normals aren't supported when using high
quality normals in the viewport. Some AMD platforms were pushed to use
high quality normals to work around a driver bug where 1010102 texture
formats `GL_INT_2_10_10_10_REV` wasn't uploaded to the GPU.

This change will remove commonly used polaris platforms from the
work-around. This has been tested with a RX480 against the latest AMD
whql drivers (22.5.1). Users need to ensure that they use the latest
drivers that are available on their platform.

Although this change doesn't fix the underlying issue to support edit
normals when high quality normals are enabled. It will not force that
common platforms cannot use a feature as their platform is forced into
using a work-around.
2022-05-24 11:14:10 +02:00
Clément Foucault ec5b53a018 Fix T98247 EEVEE: Regression: Shader To RGB not displaying textures
This was caused by the nodetree branch duplication not handling incoming
links to the copied node, making all bsdfs nodes use their default values.
2022-05-24 10:35:24 +02:00
Jacques Lucke 174c3ffb4a Fix T98268: replace string node des not handle empty strings correctly
Just use an existing function from blenlib instead of implementing a new version.
2022-05-24 10:21:02 +02:00
Jacques Lucke 2ea6a0dd4d Fix T98328: missing depsgraph update after adding node group
Adding node groups can change depsgraph relations, so the depsgraph
has to be rebuild.
2022-05-24 10:05:52 +02:00
Jacques Lucke e07b1b8316 Fix T98317: equal vs not-equal modes in compare node are not exact opposites
For vectors and colors to be not equal, it is enough when they are not equal
in one component.
2022-05-24 09:49:58 +02:00
Germano Cavalcante 5744e7d247 Fix GPUIndexBuf not working in python
Since rBb47c5505aa37, Batchs containing GPUIndexBuf initialized via
a PyObject with buffer protocol no longer work.

This was because of an unsafe optimization in the GPUIndexBuf module
for Python.

So remove this micro-optimization.
2022-05-23 22:37:30 -03:00