Commit Graph

112642 Commits

Author SHA1 Message Date
Howard Trickey
8549bc94de Fix #126511: Crash when Bevel + Mark Seam or Sharp
The code for marking seams or sharp in a bevel was nonsense
for terminal edges (beveled edges that are the only beveled
edge at a vertex). It was written assuming that either the
number of segments is 1 or there is a mesh ADJ pattern, which
is not the case if there is a terminal edge with segments > 1.
The immediate fix for infinite loops is to project against trying
to execute this code for terminal edges.
Also made current code clearer and removed duplication.
It is a future TODO to make it do something sensible for terminal
edges instead of a no-op. Incidentally I notice that it also doesn't
work for mitered booleans, but it won't infinite loop in that case.
To fix both of these cases, we should try to count boundary vertices
to skip rather than edges to skip.
2024-09-01 19:21:12 -04:00
Clément FOUCAULT
b13593e0be GPU: Silence warnings when not building with renderdoc support 2024-09-01 13:15:56 +02:00
Aras Pranckevicius
4b76b398d5 Fix: Vulkan code build failure when Renderdoc is enabled
8ae0264459 broke the build when both Vulkan and Renderdoc options
are on
2024-09-01 12:32:02 +03:00
Aaron Carlisle
7675b5a0b4 Fix: MEM_new/MEM_freeN mismatch in menu search code 2024-08-31 15:33:52 -04:00
Pratik Borhade
de487a6712 Fix #126872: Cannot assign custom preview to node asset
Caused by 03ae57dd8b
Custom preview operator uses `lib_id_preview_editing_poll`. To enable
this operator in UI, move the new condition to `lib_id_generate_preview_poll`
poll function so adding custom preview to unsupported type would
still be possible.

Co-authored-by: Julian Eisel

Pull Request: https://projects.blender.org/blender/blender/pulls/126874
2024-08-31 13:14:24 +02:00
Hans Goudey
d31c633f4c Sculpt: Reduce size of undo node struct
This struct should be split in the future, but for now its size matters
since one is created for every BVH node for every undo step. Removing
the inline buffers for the arrays is a simple way to reduce the size
from 672 to 400 bytes.
2024-08-30 23:54:41 -04:00
Hans Goudey
e950bea4df Cleanup: Sculpt: Remove unused field from undo Node struct 2024-08-30 23:49:08 -04:00
Hans Goudey
a7ecca9ed1 Cleanup: Sculpt: Pass mesh as const reference to BVH build 2024-08-30 22:57:37 -04:00
Hans Goudey
ba4a131295 Sculpt: Avoid mutable retrieval of positions when building BVH
This can avoid a copy when the positions are shared at first.
Part of #118145.
2024-08-30 22:57:37 -04:00
Sean Kim
ead0e2d1f8 Cleanup: Sculpt: Remove unnecessary default case statements
Pull Request: https://projects.blender.org/blender/blender/pulls/127003
2024-08-31 04:04:34 +02:00
Sean Kim
0df133559c Refactor: Store active_vert_ as ActiveVert not PBVHVertRef
This commit changes the raycasting code to store values as the
`ActiveVert` type instead of `PBVHVertRef` to avoid needing to check the
type of the PBVH when retrieving information.

It also fixes a case that did not reset the active vert when performing
a raycast.

Pull Request: https://projects.blender.org/blender/blender/pulls/127000
2024-08-30 21:45:59 +02:00
Harley Acheson
fb651c1613 UI: Show Splash Version Text in White
The version text shown over the splash screen image needs to always be
white regardless of the theme. With "Blender Light" this text is black
and almost impossible to read. This PR adds the ability to set a
specific color for labels without icons and does so for the splash
screen.

Pull Request: https://projects.blender.org/blender/blender/pulls/126340
2024-08-30 20:52:17 +02:00
Bastien Montagne
0ade063f33 Refactor: Move KeyMaps and Operators PointerRNA storage to C++ allocations.
This commit essentially moves allocation of KeyMaps and Operators
PointerRNA data storage to use C++ new/delet, instead of C alloc/free.

Part of the effort to make PointerRNA non-trivial (#122431).

Pull Request: https://projects.blender.org/blender/blender/pulls/126935
2024-08-30 20:44:00 +02:00
Hans Goudey
5be7eae049 Fix: Missing multithreading in PBVH bounds update
Just a performance concern.
Mistake in 52bf292349.
2024-08-30 14:20:45 -04:00
Sean Kim
c2aa9ac9cf Fix #126914: Sculpt crash after unsubdividing has no effect
With c20bb31325 the `active_vert` related
methods added a check against the relevant pbvh type. In certain
situations, the PBVH is freed but is not refreshed prior to the cursor
being drawn.

In the long term, we want the PBVH to be owned by the mesh, not the
`SculptSession`, so adding more logic around ensuring depsgraph tags
with PBVH changes to implicitly regenerate the PBVH is a step in the
wrong direction.

Additionally, it doesn't make sense that we don't ensure the PBVH exists
before accessing the `active_vert`, as its context is dependent on the
PBVH.

Therefore, this commit introduces multiple changes:
* Ensures that the PBVH exists prior to doing a raycast or other cursor
  related actions
* Removes the checks against the PBVH type in `SculptSession` in
  favor of debug asserts to avoid crashes and assist in finding other
  situations where the state of the PBVH is ambiguous.

Pull Request: https://projects.blender.org/blender/blender/pulls/126953
2024-08-30 19:46:12 +02:00
Omar Emara
bb87690549 Fix #126984: CPU/GPU difference in jitter Lens Distort
The Lens Distort node is different between CPU and GPU when jitter is
enabled. That's because GPU incorrectly assumed that jitter with no
dispersion would have no effect. So we fix this by adjusting the
identity condition.

Further more, the green channel was not jittered for the GPU, that's
because the jitter was only seeded by the integration steps and was thus
constant for all channels. And since the green channel is the result of
addition of two opposite accumulations, the green channel was left
unaltered. To fix this, we include the start channel of the integration
in the seed to the jitter to make sure different channels get different
jitter.

Pull Request: https://projects.blender.org/blender/blender/pulls/126993
2024-08-30 18:44:29 +02:00
Laurynas Duburas
ce28af7352 Overlay-Next: Image
Overlay-Next version of image.

Rel #102179

Co-authored-by: Clément Foucault <foucault.clem@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/126243
2024-08-30 18:11:14 +02:00
Clément Foucault
cfb261928c Overlay-Next: Fluid
Straight-forward port.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126878
2024-08-30 17:48:52 +02:00
Clément Foucault
e22b931cfb Overlay-Next: Xray Fade
Straight-forward port.

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126967
2024-08-30 17:33:28 +02:00
Julian Eisel
3386761411 Sculpt/paint: Write brush types to brush asset metadata
This way we can query the brush types, e.g. to filter out eraser brushes
in the brush asset selector while the eraser tool is selected, see
https://projects.blender.org/blender/blender/issues/126032.

Technically a brush may have different brush types depending on the
mode. So we store a type for all supported modes.

Ideally the name of the custom metadata property would match the name of the
properties in RNA. They will match after #126796, the names here are the new
ones, to avoid having to version asset metadata.

Pull Request: https://projects.blender.org/blender/blender/pulls/124618
2024-08-30 17:00:10 +02:00
Iliya Katueshenock
ba28469e45 Fix: BLI: Correct total_size for sliced offset indices
Its common to have 0 at the begin of an offset indices sequence.
But this is not true for a slice of offset indices.

Pull Request: https://projects.blender.org/blender/blender/pulls/126964
2024-08-30 16:44:33 +02:00
Charlie Jolly
294994e4b9 Geometry Nodes: new Hash Value node
This node hashes various types into an integer. Note that hashes
cannot generally used as unique identifiers because they are not
guaranteed to be unique. It can be used to generate somewhat
stable randomness though in cases where White Noise does not
offer enough flexibility.

It uses hash functions from BLI_noise.hh. These are also used in
the White Noise node.

Pull Request: https://projects.blender.org/blender/blender/pulls/110769
2024-08-30 16:42:29 +02:00
Hans Goudey
b4287a4902 Fix: Sculpt: Smooth brush crash and node data iteration issues
IndexMask iteration from 347ec1acd7 was incorrect
in the cases where we stored temporary data in contiguous sections
per PBVH node. We now call `.local()` once per PBVH node. If that
becomes a bottleneck it's avoidable, for now it's simpler though.
2024-08-30 10:07:30 -04:00
Clément FOUCAULT
870d664e31 Overlay-Next: Edit Curves
Straightforward Port

Rel #102179

Pull Request: https://projects.blender.org/blender/blender/pulls/126892
2024-08-30 16:03:44 +02:00
Clément FOUCAULT
8ae0264459 GPU: Add debug scope capture support for Renderdoc
This adds a new launch argument when building with
renderdoc support. It allows to trigger the capture
of a specific capture scope. This allows selective
capture of some commonly captured parts.

Pull Request: https://projects.blender.org/blender/blender/pulls/126791
2024-08-30 15:14:58 +02:00
Jeroen Bakker
e8e89b751d Vulkan: Fix incorrect reordering when copying attachment
Solved by not supporting complex reordering at this moment. It
is currently better to focus on quality and add back performance
later. During tests I didn't detect any user noticeable performance
degradation. Could also be because we support rendering
suspending/resuming.

Fixes artifacts in EEVEE volumes and raytracing.

Pull Request: https://projects.blender.org/blender/blender/pulls/126974
2024-08-30 13:24:57 +02:00
Pratik Borhade
05f2e6f5c2 Fix #125988: File output node not using output node color
`NODE_DO_OUTPUT` flag for file output node is unset which prevents the
node from having the `TH_NODE_OUTPUT` id. Now fixed with node type
comparison.

Pull Request: https://projects.blender.org/blender/blender/pulls/126081
2024-08-30 13:19:53 +02:00
Bastien Montagne
6c7ef54211 Fix (unreported) BKE_main_namemap_get_name not always returning true when modifying given name.
The bug was probably harmless in current codebase.

Also added some basic testing of `BKE_main_namemap_get_name` itself,
and not only higher-level ID renaming code.
2024-08-30 12:58:26 +02:00
Nathan Vegdahl
515843ff3a Fix: crash after saving file with 2+ layered-action channel groups
The issue was that the forward compatibility writing code for channel groups in
layered actions was building a temporary legacy listbase, but was not clearing
it properly afterwards. This was then getting caught by an assert that ensured
that layered-action groups didn't have legacy data in them.

The reason the listbase wasn't getting cleared properly is because the
prev/next listbase pointers were getting cleared using a `LISTBASE_FOREACH`
loop, and thus the loop never progressed past the first item.

Additionally, this mistake wasn't just in the channel groups writing code, but
also the forward compatibility writing code for fcurves.

This fixes the issue in both places by switching the loops to
use`LISTBASE_FOREACH_MUTABLE`.

Based on discussion with @dr.sybren, this also removes the assert that caught
the issue. The situation it guards against is actually completely benign, and
the existence of the assert is contrary to the comments in the forward-compat
writing code explaining why its approach is okay.

Pull Request: https://projects.blender.org/blender/blender/pulls/126970
2024-08-30 12:54:41 +02:00
Jacques Lucke
1ee6a8fad5 Geometry Nodes: support customizing warning propagation
Previously, all errors, warnings and info messages were propagated from the node
that generates it to the top level node group. This is a good default, but may
not always be desirable. For example, someone may build a node group asset that
generates some warning that is irrelevant to the user to the asset. Now, the
asset author can selectively disable propagating warnings from that node.

Each node has a new `Warning Propagation` setting. It controls if warnings from
this node should be propagated to the parent group node. By default, everything
is propagated. One can also choose to propagate nothing, only errors or only
errors and warnings.

Note, this does not affect whether the warning is shown in the node itself, only
if the warning is propagated one level up!
Pull Request: https://projects.blender.org/blender/blender/pulls/126786
2024-08-30 12:06:48 +02:00
Christoph Lendenfeld
b4a6610c88 Fix: Python Errors with id_root enum
The issue was that the enum property expected a default of `Object`
which wasn't present in the default enum.
Error was: `EnumProperty(..., default='OBJECT'): not found in enum members`
Fixed it by constructing a simple `EnumPropertyItem []` with the `Object` entry.

Pull Request: https://projects.blender.org/blender/blender/pulls/126963
2024-08-30 11:03:56 +02:00
Jeroen Bakker
509123c877 Vulkan: Initial support for multiple windows
- Resource pools are shared between multiple swap chains to reduce
  code complexity
- Fix issue where activating a new graphical context could still leave
  the previous context rendering.
- Known issue: opening files with more windows require a redraw.

Reference: #126499
Pull Request: https://projects.blender.org/blender/blender/pulls/126961
2024-08-30 10:01:56 +02:00
Sean Kim
b019e4235a Cleanup: Standardize StrokeCache symmetry variable naming
Prior to this commit, variables inside `StrokeCache` used either a
`true_` prefix to indicate that the relevant position / normal /
displacement was not modified by symmetry, or a `_symmetry` / `_symm`
suffix to indicate that it was.

This commit changes all such variables to have a `_symm` suffix, as
that has fewer connotations than the `true_` prefix.

Pull Request: https://projects.blender.org/blender/blender/pulls/126902
2024-08-30 01:10:34 +02:00
Sean Kim
ce0aafe3ef Cleanup: Remove unused SculptSession variable
Pull Request: https://projects.blender.org/blender/blender/pulls/126910
2024-08-30 00:43:17 +02:00
Sean Kim
2d6416454d Cleanup: Move vertex paint data out of stroke cache
Part of #126672

Moves the `prev_colors_vpaint` array out of the `StrokeCache` and into
`VPaintData`.

Pull Request: https://projects.blender.org/blender/blender/pulls/126905
2024-08-30 00:39:47 +02:00
Richard Antalik
cab93f77eb Fix #126865: Added movie has incorrect length
Commit 8903205dd9 fixed incorrect math, in stream length setting part of
the code, which seemed to force most video files to use safer, but more
complicated codepath.

Even though the math was corrected, the logic was not great. It tried to
use container duration, only stream duration is not significantly (4x!)
longer. This is quite crude.

Instead, check if there is any significant difference between stream and
container durations. The threshold is kept quite high, just to be safe.
This code should be removed in futute cleanup / refactoring.

Pull Request: https://projects.blender.org/blender/blender/pulls/126866
2024-08-29 22:53:09 +02:00
Richard Antalik
1e6f21c34d Fix #126826: Regression in VSE movie rendering performance
Regression is caused by movie being rendered twice for the same frame
number, but the image is not cached after 5ecb70964e.

The image is rendered first to determine `early_out` in
`seq_render_strip_stack()`, then for the actual image output.

Since VSE cache is not to be used for render job, `ffmpeg_fetchibuf()`
can be optimized to return frame, which is already decoded instead of
re-seeking to last keyframe and decoding all following frames again.

Pull Request: https://projects.blender.org/blender/blender/pulls/126911
2024-08-29 22:45:49 +02:00
Harley Acheson
d9971d6414 UI: Detailed Large File & Folder Icons
Changes to the icons used for document and folder when in thumbnail
view in File Browser. A bit more detail, less chunky, more in tune
with OS versions. Better match for the recent increased fidelity of
the "type" icons that are shown in their centers.

Pull Request: https://projects.blender.org/blender/blender/pulls/126760
2024-08-29 20:49:55 +02:00
Hans Goudey
69add5aa47 Cleanup: PBVH: Standardize some usage of node grid indices
- Call the data pointers "elems" and the grid indices "grids"
- Remove null check that really shouldn't be necessary
- Use Span and range based for loops
- Use accessor function instead of raw node field access
2024-08-29 14:12:26 -04:00
Hans Goudey
9791625ae3 Cleanup: PBVH: Add accessor for node triangle indices 2024-08-29 14:11:17 -04:00
Hans Goudey
347ec1acd7 Refactor: Sculpt: Switch to new API for BVH node selection & data access
Use `IndexMask` for a selection of nodes, and remove the temporarily
added type-agnostic functions for PBVH node data access. This change
results in a lot of boilerplate change since all iteration over nodes is
affected, and the proper types for nodes need to be used to access
their data.

Until leaf and inner nodes are split, the `all_leaf_nodes` function has
an unfortunate signature now since it needs to return an `IndexMask`
as well. That should be simplified in the future.

Pull Request: https://projects.blender.org/blender/blender/pulls/126944
2024-08-29 19:34:22 +02:00
Nathan Vegdahl
1c1e389d4b Refactor: misc improvements to the channel groups code
Addressing post-landed review comments from @dr.sybren in #125774.

These changes are all refactors and cleanups, and should have no functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/126822
2024-08-29 19:12:45 +02:00
Jacques Lucke
df59028d0b Geometry Nodes: use different icons for warning and error messages
Pull Request: https://projects.blender.org/blender/blender/pulls/126936
2024-08-29 18:04:49 +02:00
Christoph Lendenfeld
0c2e162557 Fix #126137: Unable to create pose asset with layered action
The issue was that the `id_root` property can be 0,
but the enum doesn't officially support this value.

The fix is to create a new function `rna_id_root_itemf`
that dynamically creates the enums, which is basically
`rna_enum_id_type_items` + an extra entry for 0.

Pull Request: https://projects.blender.org/blender/blender/pulls/126837
2024-08-29 17:45:16 +02:00
Julian Eisel
6f1676acc9 Fix: UI: Missing properties texture tab when entering image paint mode
When opening an image editor and setting that do "Paint" mode, the
navigation bar in the properties editor wouldn't redraw to display the
texture tab.
2024-08-29 16:41:08 +02:00
Jacques Lucke
e8b81065bc Geometry Nodes: support custom warnings in node groups
This implements the `Warning` node that allows node groups to communicate
expectations about input values to the user.

By default, the `Warning` node is only evaluated if the node group that contains
it is evaluated in any way. This is better than always evaluating it, because
that could trigger lots of unnecessary evaluation in parts of the potentially
large node tree which should be ignored. In this basic mode, the output of the
node should not be connected to anything and it must not be in a zone.

For more fine-grained control for when the `Warning` node should be evaluated,
one can use the boolean output which is just a pass-through of the `Show` input.
If this output is used, the `Warning` node will only be evaluated if its output
is used. A simple way to use it is to control a Switch node with it that e.g.
"disables" a specific output when the inputs are invalid. In this case, the
`Warning` node may also be in a zone.

The node allows the user to choose between 3 severity levels: Error, Warning and
Info. Those are the same levels that we use internally. Currently, the error and
warning mode are pretty much the same, but that may change in the future.

Pull Request: https://projects.blender.org/blender/blender/pulls/125544
2024-08-29 16:03:25 +02:00
Jonas Holzman
4449fba2f3 Obj-C Refactor: Remove unsound use of const in Objective-C code
The use of `const` for Objective-C object pointer is not standard and
generally unsound. Unlike a C++ class, which has support for const and
non-const methods. An Objective-C object will still respond to mutable
selectors even if its object pointer is const, making it semantically
useless.

Another problem with const Objective-C object is that they cannot be
properly passed into other Objective-C object selectors due to type
differences. Even if that selector didn't modify the underlying object.

For consistency with general Objective-C code style guidelines, usage of
const pointer syntax (`Class *const`) were also removed.

Ref #126772

Pull Request: https://projects.blender.org/blender/blender/pulls/126768
2024-08-29 15:59:07 +02:00
Sybren A. Stüvel
090c7aa68e Anim: add operator for creating a new Action Slot to the dope sheet header
Add new operator `anim.slot_new_for_object`, which creates a new action
slot for the active object. Since this slot is created on the action
used by the object, it requires that this action exists and is a
layered/slotted action (which by definition includes empty actions).

Pull Request: https://projects.blender.org/blender/blender/pulls/126934
2024-08-29 15:37:03 +02:00
Bastien Montagne
b6e022d913 BPY/RNA: Add a note to ObjectBase documentation that it is never exposed.
Blender Python API does not expose the 'base' object data currently (it
always converts it to the actual object).
2024-08-29 15:27:36 +02:00
Campbell Barton
0f3793205d Fix #126852: "Lock Camera to View" crashes after "Reload Scripts"
Tag gizmos to be re-created when reloading scripts.
2024-08-29 23:09:43 +10:00