Commit Graph

104672 Commits

Author SHA1 Message Date
Hans Goudey
ee9265710a Cleanup: Use C++ BitVector for sculpt boundary info 2023-11-19 15:13:03 -05:00
dupoxy
323259a7da Fix: IO: C++ STL exporter using 'PLY' in error message
Pull Request: https://projects.blender.org/blender/blender/pulls/115148
2023-11-19 18:33:50 +01:00
Hans Goudey
a0b9865aa6 Cleanup: Simplify crazyspace loop over mesh corners
Use functions to retrieve the next and previous corners
in a face. The complexity of tracking them manually isn't
worth it here. Also standardize naming a bit and use a
C++ BitVector instead of the C equivalent.

Pull Request: https://projects.blender.org/blender/blender/pulls/115146
2023-11-19 18:31:37 +01:00
Hans Goudey
4dede4efa8 Fix #115060: Swapped custom data mask in BMesh code 2023-11-19 10:46:07 -05:00
Aras Pranckevicius
17c793e43c IO: C++ STL exporter
There was a C++ STL importer since Blender 3.3, but no corresponding C++ STL exporter. This PR is adding said exporter: taking https://projects.blender.org/blender/blender/pulls/105598 and finishing it (agreed with original author).

Exporting Suzanne with 6 level subdivision (4 million triangles), on Apple M1 Max:
- Binary: python exporter 7.8 sec -> C++ exporter 0.9 sec.
- Ascii: python exporter 13.1 sec -> C++ exporter 4.5 sec.

Co-authored-by: Iyad Ahmed <iyadahmed430@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/114862
2023-11-19 16:41:20 +01:00
Iliya Katueshenock
31abb2b3af Geometry Nodes: Edge Paths to Selection node speedup
Parallelize vertex and edge selection loops.
In a test file, the node runtime changed from 5.08 to 0.83 ms.

Pull Request: https://projects.blender.org/blender/blender/pulls/115131
2023-11-19 15:32:01 +01:00
Harley Acheson
2793b37f17 Fix #115085: Multicolumn Menus without Category Names
Handle menus that are meant to be multicolumn, with section dividers,
but not all sections have category names, just separators.

Pull Request: https://projects.blender.org/blender/blender/pulls/115102
2023-11-18 17:21:42 +01:00
Lukas Tönne
c845233d1c Nodes: Move ValueOrField struct into blenkernel
This struct is currently defined in the `functions` module but not actually used there. It's only used by the geometry nodes module, with an indirect dependency from blenkernel via simulation zone baking. This scope is problematic when adding grids as socket data, which should not be part of the functions module.

The `ValueOrField` struct is now moved to blenkernel, so it can be more easily extended to other kinds of data that might be passed around by geometry nodes sockets in future. No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/115087
2023-11-18 13:11:39 +01:00
Hoshinova
0b11c591ec Nodes: Merge Musgrave node into Noise node
This path merges the Musgrave and Noise Texture nodes into a single
combined Noise Texture node. The reasoning is that both nodes
intrinsically do the same thing, which is the layering of Perlin noise
derivatives to produce fractal noise. So the patch de-duplicates code
and unifies the use of fractal noise for the end use.

Since the Noise node had a Distortion input and a Color output, while
the Musgrave node did not, those are now available to the Musgrave types
as new functionalities.

The Dimension input of the Musgrave node is analogous to the Roughness
input of the Noise node, so both inputs were unified to follow the same
behavior of the Roughness input, which is arguable more intuitive to
control. Similarly, the Detail input was slightly different across both
nodes, since the Noise node evaluated one extra layer of noise. This was
also unified to follow the behavior of the Noise node.

The patch, coincidentally fixes an unreported bug causing repeated
output for certain noise types and another floating precision bug
#112180.

The versioning code implemented with this patch ensures backward
compatibility for both the Musgrave and Noise Texture nodes. When
opening older Blender files in Blender 4.1 the output of both nodes are
guaranteed to always be exactly identical to that of Blender files
created before the nodes were merged in all cases.

Forward compatibility with Blender 4.0 is implemented by #114236.
Forward compatibility with Blender 3.6 LTS is implemented by #115015.

Pull Request: #111187
2023-11-18 09:40:44 +01:00
Richard Antalik
b77f21f6ef Fix #114999: VSE preview doesn't update when snapping handle
Caused by missing cache invalidation.
2023-11-18 04:13:00 +01:00
Jacques Lucke
02bc43d08e Fix: versioning code results in duplicate node links
This issue was caused by having some hidden links and the changes in
8149678d5e to `version_geometry_nodes_replace_transfer_attribute_node`.
2023-11-17 23:15:08 +01:00
Bastien Montagne
6ce5f87d5b BLI_fileops rename unittests: add tests for directory rename.
Pull Request: https://projects.blender.org/blender/blender/pulls/115073
2023-11-17 22:53:58 +01:00
Jacques Lucke
f3cd25370c Nodes: ungroup all selected group nodes instead of just the active one
It's useful to be able to ungroup multiple groups at once when trying to
see how much complexity there is in a node setup.
2023-11-17 22:48:53 +01:00
Bastien Montagne
cb06b30587 Add 'rename' unittest for BLI_fileops' BLI_rename/_overwrite().
Pull Request: https://projects.blender.org/blender/blender/pulls/115067
2023-11-17 20:52:03 +01:00
Harley Acheson
c11d5b4180 UI: Color Picker Position Indication
Changes to how the current positions in the color picker are shown.

Pull Request: https://projects.blender.org/blender/blender/pulls/113753
2023-11-17 19:18:28 +01:00
Miguel Pozo
f27e87db7a Fix #114918: Workbench: Negative scaled sculpt mesh artifacts 2023-11-17 16:37:59 +01:00
Iliya Katueshenock
8149678d5e Geometry Nodes: use dynamic declaration for some nodes
This changes a bunch of nodes that have a data type drop-down to using a dynamic
node declaration that changes based on the selected data type instead of always having
all sockets. This greatly simplifies the code and is less weird than having suffixes on
socket identifiers.

Backward compatibility and forward compatibility remain due to #113497 and #113984.

One user-visible change is that changing the data type in these nodes does not break
the link anymore.

It may be necessary to bring back some functionality from link-drag-search afterwards.

Pull Request: https://projects.blender.org/blender/blender/pulls/113553
2023-11-17 16:23:34 +01:00
Christoph Lendenfeld
a4f086ec1b Refactor: move autokeyframe_pose
No functional changes.

Move the function `autokeyframe_pose` from
`transform_convert_armature.cc` to `keyframing_auto.cc`

The function has a lot of overlap with `autokeyframe_object` so it
can potentially be simplified later on.

Pull Request: https://projects.blender.org/blender/blender/pulls/115051
2023-11-17 16:06:15 +01:00
Jacques Lucke
e62179ce04 Fix: assert when running deform modifier tests in debug build
The issue was that `dco` had a different size than was expected
because it was intentionally larger than strictly necessary.
2023-11-17 13:10:51 +01:00
Germano Cavalcante
e581dde40f Transform: remove restricted assert
`t-val` and `t->loc` can share same pointer, as long as `t->loc` is 3D.

This partially reverts 9dcf73c715
2023-11-17 08:55:27 -03:00
Christoph Lendenfeld
10fae637aa Refactor: Extract function to initialize a BezTriple
No functional changes.

The function `insert_vert_fcurve` also initialized a `BezTriple` from the flags it got.
Extract that logic into a separate function so it can be reused elsewhere

Pull Request: https://projects.blender.org/blender/blender/pulls/115039
2023-11-17 11:34:30 +01:00
Falk David
a884968593 GPv3: Use immutable layer references
In `retrieve_editable_drawings` the code was using mutable pointers
to the layers when it could use immutable ones.
2023-11-17 10:43:12 +01:00
Falk David
143b891ff9 Fix: GPv3: Using current frame twice in multi-frame
The function that returns the frame numbers for a layer would
include the current frame twice if multi frame editing was used.
2023-11-17 10:43:12 +01:00
Bastien Montagne
21a54d5b58 Fix 'Make LibOverride' on Empty-instanced collection making everything editable.
Logic handling the 'make everything editable' option was wrong, this is
currently not exposed in 3DView operator, and should always be false.
2023-11-17 10:42:29 +01:00
Bastien Montagne
35cd6397d5 Fix 'Make LibOverride' from 3DView failing in some trivial cases.
Slightly non-trivial linked collections hierarchy could cause 'Make
LibOverride' operation from 3DView fail, reporting that more than one
potential root collections were found.

Logic here was way to simple, now this error should only happen when
there are effectively more than one potential 'good' root collection
(i.e. when two unrelated collections both contain (directly or not) the
selected objects(s).
2023-11-17 10:42:29 +01:00
Antonio Vazquez
00b04e1030 GPv3: Fix Remove Material Slot and Unused Slots
There was two problems because these operators were not supported in GPv3:

* If you remove the slot, the material was not reassigned and the material index attribute could get a wrong index. This also affected the unused slots.
* The Unused Materials operator was executed, but it was doing nothing because there was not support for new GPv3 object.

This PR adds support for new Grease Pencil object.

Pull Request: https://projects.blender.org/blender/blender/pulls/114850
2023-11-17 10:37:56 +01:00
casey bianco-davis
4dfed520a3 GPv3: Delete operator
Adds the delete operator to edit mode grease pencil, and also adds it to the delete menu.

Pull Request: https://projects.blender.org/blender/blender/pulls/111571
2023-11-17 10:35:56 +01:00
Antonio Vazquez
39f30e848c GPv3: Show All Materials Operator
Adds the Show All Materials operator.

Also includes a refresh of despgraph when the hide prop changes.

Note: The actual render engine does not support hiding by materials.

Related to #114997

Pull Request: https://projects.blender.org/blender/blender/pulls/115001
2023-11-17 10:32:35 +01:00
Hans Goudey
865929d4b1 Cleanup: Retrieve sculpt mask without write access
This may reduce memory usage because the mask data wouldn't
have to be duplicated between the evaluated and original mesh.
2023-11-17 10:29:02 +01:00
Omar Emara
7ea54b7472 Fix #114648: Compositor executes upon editing non-compositor trees
The compositor currently executes when editing node trees that are not
compositor related, like geometry and shader node trees.

That's because the node space listener always tags the compositor to
execute for any node edit notifier. To fix this, we add the ID of the
edited node tree as a reference to the edit notifier and only tag for
an update when the space tree matches the reference one.

Pull Request: https://projects.blender.org/blender/blender/pulls/114978
2023-11-17 08:52:47 +01:00
Jeroen Bakker
54e1ee3905 Vulkan: Combine Data Transfer and Compute Commands
Currently we keep track of 3 command buffers. Data transfer, compute and
graphics. The reason is that data transfer and compute commands cannot
be recorded in a command buffer that has an active render pass.

This PR simplifies the implementation by combining data transfer and
compute commands as there is no need to separate those in individual
command buffers.

This is in preparation of improving submission performance.

Pull Request: https://projects.blender.org/blender/blender/pulls/115033
2023-11-17 08:27:44 +01:00
Jeroen Bakker
35db18af2e Cleanup: Remove Never Failing Check 2023-11-17 07:56:56 +01:00
Harley Acheson
be97ed2828 Fix #115023: Error Measuring Null Menu Item Name
Do not attempt to measure the length of a null string.

Pull Request: https://projects.blender.org/blender/blender/pulls/115027
2023-11-17 06:00:28 +01:00
Hans Goudey
c56912eade Cleanup: Acess geometry bounds more directly
Similar commits:
- 4eeabd274e
- 6301775f48
- ab9716f058
2023-11-17 00:41:37 +01:00
Hans Goudey
da511f5573 Fix: Incorrect freeing in depsgraph RNA objects iterator
Caused by 4d7274b7f4.
The depsgraph iterator was freed twice, and the "custom"
iterator wasn't freed at all. Thanks to Jesse for investigating this.
2023-11-17 00:41:37 +01:00
Harley Acheson
07820b0703 UI: File Browser Display Narrowing
Change the format of columns, and remove columns, as the File Browser
window narrows.

Pull Request: https://projects.blender.org/blender/blender/pulls/112464
2023-11-17 00:11:40 +01:00
Harley Acheson
d3a2673cb8 Fix #102714: Interface Font Selection
When selecting fonts for the interface, show thumbnails
and start in the user-specified fonts directory

Pull Request: https://projects.blender.org/blender/blender/pulls/113259
2023-11-16 22:07:31 +01:00
Harley Acheson
83ce3ef0db Fix #72093: Collapse Wide Enum Lists to One Column
If a multi-column Enum menu gets too wide for the available space,
collapse it to a single column.

Pull Request: https://projects.blender.org/blender/blender/pulls/105386
2023-11-16 21:14:35 +01:00
Hans Goudey
4d7274b7f4 Cleanup: Use C++ types for crazyspace deform storage
Use float3, float3x3, and Array for data used for mesh crazyspace
calculation. Propagate the change wherever necessary to not add
more casting to the old C types.

Because `ObjectRuntime` (and therefore `DEGObjectIterData`) became
non-trivial structs, the code that swaps iterators for RNA depsgraph
object iteration had to be changed a bit to be more friendly to C++
memory semantics.

Pull Request: https://projects.blender.org/blender/blender/pulls/114998
2023-11-16 18:29:52 +01:00
Iliya Katueshenock
6e2fc77e7f Fix #114993: wrong entry in Split to Instances domain dropdown
Pull Request: https://projects.blender.org/blender/blender/pulls/115005
2023-11-16 18:29:34 +01:00
Nate Rupsis
661e7e451a Anim: Rename NLA "Channels" to "Tracks"
Updating "NLA Channel"  to "NLA Tracks" across board, since the terminology "Tracks" is the most prevalent in operators, code, etc.
2023-11-16 17:59:18 +01:00
Philipp Oeser
7f33a743d8 Fix #114963: Image Editor - Fill Tool doesn't work as expected
Caused by 406cfd214a.

Was only filling a single pixel.

Some pointer magic wasnt working after culprit commit.
Now changed to a more common way of accessing.

Pull Request: https://projects.blender.org/blender/blender/pulls/114989
2023-11-16 17:08:13 +01:00
Hans Goudey
807c076e28 Cleanup: Remove unused edit mesh cage bounding box cache
Unused after ffaf3e30ef.
These days there are better ways to cache bounds anyway.
2023-11-16 16:28:06 +01:00
Omar Emara
b71cddb6b4 Fix: Link errors due to different linkage in recent refactor 2023-11-16 16:16:08 +02:00
Jeroen Bakker
782e2e5f9a Vulkan: Make Command Pool, Descriptor Sets Context Specific
In Blender a context should not be shared between threads. In Vulkan a
command pool must not be shared between threads. In the current
implementation the command pool are stored on device level and could
therefore be shared between multiple context which made the implementation
not matching these rules.

This PR moves the command pool from device to command buffers where it
would not conflict between other contexts. This PR doesn't make the Vulkan
backend fully multithreaded. The access to the queue is still missing.

Pull Request: https://projects.blender.org/blender/blender/pulls/114977
2023-11-16 15:03:47 +01:00
Omar Emara
c5eb420c74 Viewport Compositor: Allow access to depth pass
This patch allows access to the depth pass in the Viewport Compositor.

Since the depth information require full precision, making use of the
pass requires the full precision option for now. In the future, this
pass will always be stored using full precision regardless of the
precision option.
2023-11-16 15:04:47 +02:00
Hans Goudey
f27aee857b Cleanup: Remove unnecessary keywords from newly C++ headers 2023-11-16 12:00:26 +01:00
Amelie Fondevilla
d2e40185d3 GPv3: Frame selected channels for grease pencil
Update the code for framing selected channels to take into account grease pencil channels.

Pull Request: https://projects.blender.org/blender/blender/pulls/111512
2023-11-16 11:49:34 +01:00
Hans Goudey
3d57bc4397 Cleanup: Move several blenkernel headers to C++
Mostly focus on areas where we're already using C++ features,
where combining C and C++ APIs is getting in the way.

Pull Request: https://projects.blender.org/blender/blender/pulls/114972
2023-11-16 11:41:55 +01:00
Hans Goudey
451c054d9b Fix #114822: Data transfer modifier doesn't work for face corner normals
In 89e3ba4e25, the preprocess step was removed because the
normals are lazily calculated. But now we need to fetch the source normals
from the correct placed-- they still were looked for in `CD_NORMAL`.
2023-11-16 11:41:33 +01:00