Commit Graph

128873 Commits

Author SHA1 Message Date
Hans Goudey
ccfe952f34 Depsgraph: Hard-code visibility for "from IDs" builder
`FromIDsBuilderPipeline` is used to build a minimal depsgraph from
a set of IDs. However, the "visibility" of those IDs is still calculated
based on things like the view layer and the relations. Typically we want
all of these to be visible, the builder just happened to be used in
cases when all of the IDs were already visible so far.

This is needed for node tools which may reference objects or other
IDs from outside of the active depsgraph.

Co-authored by: "Sergey Sharybin <sergey@blender.org>"
2023-10-30 10:45:30 +01:00
Michael Jones
e9ad267151 Cycles: Remove MetalRT experimental status, and add "auto enable" option
_(NOTE: This is a clone of [PR 114067](https://projects.blender.org/blender/blender/pulls/114067), but targeting `blender-v4.0-release` as originally intended)_

This PR removes the "experimental" disclaimer from the MetalRT control now that the unit tests all render correctly with it enabled. As well as "Off" and "On", this adds a third "Auto" setting - a new default which can be used to pick the best option.

Pull Request: https://projects.blender.org/blender/blender/pulls/114232
2023-10-29 14:19:39 +01:00
Campbell Barton
1dc683e376 Fix #114223: Crash when undo in curves edit mode
Regression in [0], missed scene assignment.

[0]: 585f43064a
2023-10-29 16:53:25 +11:00
Jason Fielder
b0a032e2eb Fix: EEVEE export CMDBuf out of memory in Metal
Previous commit 9333336a73f9e116771a52a2caa96455ea345c71
broke export rendering in Metal due to the command
submission not being flushed between samples.

This would lead to ghosting in export images due
to memory synchronization issues and GPU
scheduling dependency graph problems.

The in-flight memory could also get
extremely high if exporting high numbers
of samples due to all commands being
enqueued within a single submission.

Patch resolves this by flushing for
each render frame sample and
ensuring intermediate in-flight
memory remains controlled.

Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/114174
2023-10-27 15:13:49 +02:00
Campbell Barton
585f43064a Fix edit-mode undo leaving edit-mode with multiple windows
With two or more windows, edit-mode undo assumed it was
possible to load the undo state into the current scene.

When multiple windows are used this is not always the case.
Edit-mode undo steps now store the scene used to create them
which is used to read undo data back into this scene
(when it's shown in a window). Otherwise the current context is used.
2023-10-27 11:50:07 +11:00
Douglas Paul
c50b682858 Fix #114156: animation player assert on launch on macOS
Adds missing calls to GPU_render_begin and GPU_render_end,
required for Metal.

Pull Request: https://projects.blender.org/blender/blender/pulls/114157
2023-10-26 15:50:20 +02:00
Campbell Barton
4f0d8931f0 Fix undo crash with multiple scenes & windows
Creating a new window then a new scene would crash on undo
because the undo step loaded would not contain the new windows scene.

Regression introduced since 3.6.
2023-10-26 22:26:13 +11:00
Hans Goudey
0e4a3bd7aa Fix: Selection input inivisible in set selection node
It's much simpler to be able to control the selection with a checkbox.
It can still be a field.
2023-10-25 20:44:18 +02:00
Miguel Pozo
5d06632565 Fix #114096: Broken thumbnail shadows 2023-10-25 18:57:41 +02:00
Michael Jones
af9ffee152 Cycles: Metal: Fix occasional anim corruption (KernelData MD5 refresh bug)
This fixes an issue where animation frames occasionally get corrupted (e.g. when rendering "Pokedstudio" Blender 2.77 splash screen). This happens when the KernelData is refreshed but the MD5 isn't immediately regenerated which can cause the wrong PSO to be selected.

Pull Request: https://projects.blender.org/blender/blender/pulls/114153
2023-10-25 17:47:13 +02:00
Brecht Van Lommel
a5cf5a00fb Fix #113849: animation player crash on launch on macOS
GPU backend detection was missing, causing it to try using the
non-existent OpenGL backend.

Thanks to Douglas Paul for helping identify the problem.
2023-10-25 16:19:44 +02:00
Campbell Barton
8e38cd9b8f Correct potential error in recent Wayland/LIBDECOR window size change
While the fix worked in my tests, the compositor is allowed to ignore
a requested window state change which could have entered an eternal
loop. Avoid this by limiting the while loop to 2x round-trips.
2023-10-25 21:17:31 +11:00
Campbell Barton
dcaeed7522 Fix Wayland/LIBDECOR size on startup when maximized
Even though the window was maximized, the non-maximized size was used.
Since the display size was used the window would be slightly larger,
clipping the status bar in GNOME.
2023-10-25 20:42:27 +11:00
Campbell Barton
3638aa5b77 Fix Wayland/LIBDECOR assuming a normal window state on startup
As the window state will have been initialized, read the current window
state instead of assuming normal so changes are properly detected.

Also note that the cause of #107314 has been fixed up-stream.
2023-10-25 11:21:17 +11:00
Campbell Barton
60a8ae7830 Build: use /etc/ssl for OPENSSLDIR on Linux & macOS
Define the OPENSSLDIR so the local build paths from the build systems
aren't being searched on users systems.
2023-10-25 11:05:34 +11:00
Michael Jones
4e3ee4f026 Cycles: Fix animation hangs/crashes in Metal due to leaking temp objects
This PR adds `@autoreleasepool` blocks around functions that have been observed to create hidden temporary NSObjects, and eventually cause command buffer failures. A couple of allocations needed to be tweaked in order to maintain correct retain/release behaviour. This PR also fixes the command buffer error text to show more useful information.
2023-10-24 23:20:16 +01:00
Hans Goudey
692292536f Fix #113665: Sculpt mode does not unshare color attribute data
When retrieving a color attribute to paint it, the layer data needs to
be unshared so that it doesn't modify data from separate meshes.
In the past I think we've unknowingly avoided this problem by porting
code to the new attribute API. I've been refactoring `PBVH` and
`SculptSession` to make that possible (removing the long-lived
layer pointers in the two structs). But that wouldn't fit as a bug fix.
In the meantime, make sure the color attribute data is un-shared
and separate "for read" and "for write" versions of the function.

Pull Request: https://projects.blender.org/blender/blender/pulls/114119
2023-10-24 20:19:14 +02:00
Hans Goudey
7dcd777379 Fix #114077: Duplicate edges for two point evaluated curves
A curve with only two points shouldn't be considered cyclic. Otherwise
a duplicate edge is added between the points. This fixes the utility
that calculates the segment count to account for this and adjusts
other code to account for that as necessary. Curves now evaluate
correctly to a single evaluated segment in this case (in the case of
Bezier and NURBS curves, it depends on the resolution though).

Co-authored-by: Dalai Felinto <dalai@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/114095
2023-10-24 19:39:21 +02:00
Hans Goudey
5af8b839cf Fix #113988: Deformed PBVH modifies original normals
The PBVH is given the evaluated positions from the end of the modifier
stack, but then updates normals from the original mesh based on those
positions. This causes a feedback loop, even when in vertex paint mode.

As mentioned in a comment, calculating these normals and duplicating
the arrays is quite wasteful. But it's necessary since the PBVH always
assumes we are interested in modifying the positions, and also always
retrieves the normals from the original mesh too. Those things would
be good to untangle at some point too, but for now this change is small
and helps to clarify the situation as well.

Caused by: b339e3937d

Pull Request: https://projects.blender.org/blender/blender/pulls/114118
2023-10-24 18:56:15 +02:00
Hans Goudey
74af0528f4 Fix #113752: Explode modifier edge cut option broken
`EdgeHash` was replaced by `VectorSet`, but the changes in the data
structure hid some other changes, causing incorrect indices to be used.
Instead use `Map` and explicitly build the indices similar to how they
were counted in a separate loop before.

Caused by: 425b871607
2023-10-24 18:44:24 +02:00
Dalai Felinto
753e9e0f2b Fix Node Tools popovers dark text
Labels in popover menus are always darker. That made the popovers for
Type and Modes to have a way too dark color. Specially when the values
were off.

This commit mimics what we do in the viewport Selectability &
Visibility menu. Basically we don't gray out the labels even if the
values are off.

Co-authored by: Hans Goudey <hans@blender.org>
2023-10-24 16:32:13 +02:00
Dalai Felinto
2d7ccae528 Fix #114015: Search filter removes panel header checkboxes
Caused by 1eb90ee519.

Co-authored by: Hans Goudey <hans@blender.org>
2023-10-24 16:09:26 +02:00
Charles Wardlaw
8caee74a11 Fix #112294: USD import: Fix spammy prints for unsupported and non-array attributes.
- Added support for Point3* and Normal3* attributes as CD_PROP_FLOAT3.
- Caught the last two quaternion formats.
- Silenced prints on quaternion and string formats, as they are known unsupported attributes.

This pull addresses https://projects.blender.org/blender/blender/issues/112294.
The test file provided for that issue now only generates one error, which I believe
is important to keep.

Co-authored-by: Charles Wardlaw <kattkieru@users.noreply.github.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/112298
2023-10-24 15:31:09 +02:00
Jeroen Bakker
ea2746d468 Fix #113235: Voronoi GLSL Shaders On Legacy Intel
When using Voronoi shader nodes on legacy Intel platforms (HD4400) Blender would crash
due to a driver bug. The bug is related to generating the `fractal_voronoi_x_fx` functions.
It doesn't effect all drivers, but mainly from vendors that don't allow installing the official
intel drivers.

We have tried several approaches including using unique function names and unroll only the
function of the body. But none worked on the failing platform.

In the future we could solve this by including our own GLSL compiler, but that is still very
experimental and requires a lot of testing.#113938

Pull Request: https://projects.blender.org/blender/blender/pulls/113834
2023-10-24 14:49:09 +02:00
Campbell Barton
cdbde7d941 Fix #113603: User modified key-map preferences for add-ons don't load
Regression from [0] where the key-map was attempting to load preferences
for key-map items for add-on operators which were not yet defined.
Resolve by postponing keymap updating until after loading add-ons.

[0]: 6de294a191
2023-10-24 23:32:16 +11:00
Jacques Lucke
e4ad58114b Nodes: support looking up node sockets by identifier and name
The main goal of this patch is to turn `node.inputs[...]` and `node.outputs[...]` into
the main way to lookup sockets on a node. Currently, it's used for that sometimes,
but often it is not, because it does not work in all cases. More specifically, it does
 not work when a node has multiple sockets with the same name but different
identifiers, which is relatively common.

This patch proposes to make the string lookup more convenient, more useful and
less prone to breaking after changes in Blender.

This is achieved by changing how the lookup works:
* First, it tries to find an available socket with an identifier that matches the given
  key. This is checked first, it makes sure that every socket can be accessed by its
  identifier. The identifier matching is currently disabled in some nodes where we
  want to change identifiers soonish.
* If that didn't work, it tries to find an available socket with a matching name. This
  is often convenient because it generally matches what can be seen in the UI.
  Furthermore, it's also necessary to avoid breakage with old usages of this lookup
  function.
* If both options above didn't work, it checks whether the given key matches any
  socket name/identifier that the node used to have in the past, but has been
  renamed for whatever reason. This mainly exists to avoid breaking scripts by certain
  kinds of changes in the future. This is not included in this patch.

Note, previously, string lookup would also find unavailable sockets. This is disabled
now, because the way we handle unavailable sockets internally is likely to change.
Therefor, any use of unavailable sockets might break (unavailable != hidden). For
the time being, it's still possible to find unavailable sockets by iterating over all sockets.

This change has a small chance to break existing scripts because the behavior
changes for some inputs in some nodes. However, for the cases where the function
is used in practice, I don't really expect any breakage.

This patch also allows us to give a better answer to reports like #113106.

Pull Request: https://projects.blender.org/blender/blender/pulls/113984
2023-10-24 14:04:18 +02:00
bonj
7c5b78d2c7 Fix "Fix #102885": Wrong check is always False
The check was incorrect, so it always reset the subtype to NONE.

Pull Request: https://projects.blender.org/blender/blender/pulls/114038
2023-10-24 13:57:23 +02:00
Philipp Oeser
a48d4184b5 Fix #114094: Mask by Color brush has stopped working
Caused by 97f2b01ea9.

Above commit refactored code in a way that it was always early out
(always comparing the current mask value to itself and not the new mask
value).

Pull Request: https://projects.blender.org/blender/blender/pulls/114101
2023-10-24 13:11:27 +02:00
Julian Eisel
489d07de69 Fix memory leak when renaming node group sockets/panels
Steps to reproduce:
- Download .blend from #114059
- Edit name of socket or panel in the node interface tree view
- Close Blender

Pull Request: https://projects.blender.org/blender/blender/pulls/114083
2023-10-24 11:48:08 +02:00
Philipp Oeser
dcdafaa9f5 Fix #114082: Disabling Geometry Nodes is_tool also disables is_modifier
fd9d22ba57 introduced `GeometryNodeAssetTraitFlag` (at that time
`GEO_NODE_ASSET_POINT_CLOUD` was the max enum value), then 6da4b87661
added `GEO_NODE_ASSET_MODIFIER` (but the max enum value was not changed
accordingly).

Pull Request: https://projects.blender.org/blender/blender/pulls/114092
2023-10-24 10:40:28 +02:00
Jesse Yurkovich
10eb1ac8e4 Fix #111442: Correctly handle 1-channel image formats during save
It's possible to encounter a true 1-channel image if it's coming
directly from, say, a float-value AOV or similar.

This was not accounted for and would cause issues when saving the image
out to a 3 or 4 channel format (wrong values) or when saving out to
another 1 channel format (unnecessary usage of luminance weight values).

Pull Request: https://projects.blender.org/blender/blender/pulls/111577
2023-10-24 06:50:13 +02:00
Campbell Barton
0ff1414f04 Docs: update bpy documentation, referencing PIP which is now supported
Resolve #114076.
2023-10-24 14:10:34 +11:00
Richard Antalik
dadbb5c5f7 Fix VSE retiming last key position incorrect
Last key is drawn on the right edge of the strip, but that is end of
the frame, which it should be bound to. Because of this, drawing code
and operators must consider, that this key is always displaced.

This was not done in 86a0d0015a and caused issues like #113755 that was
fixed incorrectly.
2023-10-24 04:57:00 +02:00
Richard Antalik
79b1eacba9 Fix #113890: Buffer overread when rendering after strip content range
Caused by incorrect frame index clamping in `SEQ_give_frame_index()`.
2023-10-24 04:37:34 +02:00
Campbell Barton
ca32ba33ae Fix #113961: Incorrect window size for new windows on Wayland
When the output wasn't fractionally scaled but the compositor supports
fractional scaling, new windows were smaller than requested.

Caused by [0] which was incorrectly calculating the non-fractional scale
used by LIBDECOR (which isn't accessible via it's API).

Resolve by only using fractional scaling logic when outputs
have a fractional component.

[0]: 3eda5a114f
2023-10-24 11:42:18 +11:00
Jacques Lucke
312d8b1d66 Fix #114041: freeze connecting capture attribute to repeat output node
The issue was that a node was supposed to propagate an anonymous
attribute that is only created further to the right in the tree. This does not
during inferencing, where uses of fields can only come to the right of its
creation. Note, all fields coming out of the repeat input/output node are
new field sources during inferencing.

Now, only field sources that are passed from the outside into the repeat zone
can be propagated from the repeat output to the repeat input node.

Solving this also showed another issue where anonymous attributes are
not properly propagated through a repeat zone where there is no link between
the repeat input and output node. In such cases, data is still propagated between
those two nodes when the number of iterations is zero.
2023-10-23 21:29:00 +02:00
Julian Eisel
009c4b819c Fix #114055: Tree item collapse icon doesn't respond to multiple clicks
The way we handled activation of view item buttons (which are placed
underneath other buttons) would leave that button in an active state,
giving it priority on the next event handler run. Instead we want to
cleanly exit the button after activation, so that the overlapped chevron
icon can be recognized as hovered again.

Also limit this to mouse press events, since otherwise the tree view
item would toggle the collapsed state on both the press and the release
event.
2023-10-23 21:19:05 +02:00
Julian Eisel
ad71b77f25 Fix #114024: "Mark as Asset" doesn't work in 3D View sidebar ID selector
Choosing "Mark as Asset" from the context menu of the ID selector (ID
template) would always use the selected objects instead of the ID set in
the ID selector. This is because since f22e2bab72, multiple selected IDs
have priority over a single active ID (to give batch editing priority),
and the 3D view context exposes both.

Adds variants of the mark and clear asset operators that only work on a
single ID ("id" context member). Context menus for buttons representing
an ID use this instead. Using an operator property resulted in too
complicated code. Plus the poll function would succeed in cases where
the operator wouldn't be able to succeed. Separate operators keep things
simple and more reliable.
2023-10-23 19:18:31 +02:00
Brecht Van Lommel
3a483004c8 Fix SSL cert file path not working on second cmake configure
Always create the non-cached relatve from the cached absolute path.

Ref #102300
2023-10-23 19:06:47 +02:00
georgiy.m.markelov@gmail.com
be477f069c Fix #113954: Hydra crash if output node for world light is not found
Also improve update handling of world data.

Pull Request: https://projects.blender.org/blender/blender/pulls/113974
2023-10-23 17:25:11 +02:00
Douglas Paul
f35ecfdac7 Fix documentation link for Points to Curves node
The Online Manual action in the context menu for the new Points to Curves
geometry node was going to the documentation for the Points node instead.

Pull Request: https://projects.blender.org/blender/blender/pulls/113727
2023-10-23 17:20:53 +02:00
Brecht Van Lommel
34a11f962f Fix Cycles time limit not showing unit when scene units are set to none 2023-10-23 17:12:38 +02:00
Zijun Zhou
1dd8fb8f5f Fix False Color view transform looks and console warning
* Linear is enough for the 3x1D LUT, tetrahedral is not allowed
* False Color is built on AgX, so use its looks to fix broken result

Pull Request: https://projects.blender.org/blender/blender/pulls/114054
2023-10-23 17:11:31 +02:00
Sebastian Parborg
72d011a87c Fix: Missing null pointer check in wayland xkb code
Each locale is not guaranteed to have a compose file.
We have to check if the generated table is a null pointer.
2023-10-23 15:00:32 +02:00
Clément Foucault
d91da78b35 Fix #113266: Viewport: Color banding in viewport image render
This was caused by the framebuffer incorrectly being recreated
using a byte buffer. From now on, always use the input format
or guess the format based on the output bitdepth.

Pull Request: https://projects.blender.org/blender/blender/pulls/114061
2023-10-23 13:09:59 +02:00
Pratik Borhade
b8705d342f Fix #113112: Loop Cut and Slide from menu is waiting for cursor input
This is because `TRANSFORM_OT_edge_slide` has `OPTYPE_DEPENDS_ON_CURSOR`
flag set. Due to this, invoke call to loop-cut operator was not sent
from function `WM_operator_name_call_ptr_with_depends_on_cursor`.
Since `edge slide` operator does not depend on actual cusor position, we
can remove this operator flag to fix the problem.

Pull Request: https://projects.blender.org/blender/blender/pulls/113140
2023-10-23 13:05:45 +02:00
Bastien Montagne
b213f2aa3d I18N: Updated UI translations from git/weblate repo (b232c7b5365). 2023-10-23 12:07:08 +02:00
Damien Picard
c7a6ede996 Fix #113981: ID plural names using spaces instead of underscores
Translation markers `N_()` were added to IDs' plural names in !113912.
I also renamed some of those because I thought there were only display
names.

This commit reverts the renaming, leaving only the addition of the
markers.

Pull Request: https://projects.blender.org/blender/blender/pulls/114030
2023-10-23 12:05:28 +02:00
Julian Eisel
3817c31e82 Fix crash when opening new asset shelf by dragging
Steps to recreate were:
- Open factory startup
- Add armature, switch to Pose Mode
- Drag upwards the little triangle/chevron tab in the lower right of the
  3D View

If the asset shelf would be displayed the first time for an editor, the
asset shelf data isn't valid yet and can't be accessed.
2023-10-23 11:59:03 +02:00
Campbell Barton
d2b86610f0 Fix animation player continuing to playback audio when paused
Using arrow keys for frame stepping would keep playing back audio.
Also move play/pause to utility functions.
2023-10-23 12:20:44 +11:00