Commit Graph

94475 Commits

Author SHA1 Message Date
Hans Goudey
82a46ea6f8 Geometry Nodes: Use separate field context for each geometry type
Using the same `GeometryComponentFieldContext` for all situations,
even when only one geometry type is supported is misleading, and mixes
too many different abstraction levels into code that could be simpler.
With the attribute API moved out of geometry components recently,
the "component" system is just getting in the way here.

This commit adds specific field contexts for geometry types: meshes,
curves, point clouds, and instances. There are also separate field input
helper classes, to help reduce boilerplate for fields that only support
specific geometry types.

Another benefit of this change is that it separates geometry components
from fields, which makes it easier to see the purpose of the two concepts,
and how they relate.

Because we want to be able to evaluate a field on just `CurvesGeometry`
rather than the full `Curves` data-block, the generic "geometry context"
had to be changed to avoid using `GeometryComponent`, since there is
no corresponding geometry component type. The resulting void pointer
is ugly, but only turns up in three places in practice. When Apple clang
supports `std::variant`, that could be used instead.

Differential Revision: https://developer.blender.org/D15519
2022-08-30 11:08:27 -05:00
Hans Goudey
4d107041ec Merge branch 'blender-v3.3-release' 2022-08-30 10:43:36 -05:00
Hans Goudey
3306b4a86b Fix T99253: Missing face center dots with deform modifier cage option
Before 8c25889bb6, subsurf face center tags were stored in each
vertex, so they were always copied to duplicate meshes. Now they are
stored in runtime data though, so they need to be copied explicitly.
The function name "reset_on_copy" is a bit awkward here, so the
tags are copied by the caller.
2022-08-30 10:41:26 -05:00
Antonio Vazquez
38cf0d7d13 GPencil: Improve Thickness handling for Outline operator
Actually, when you increase the thickness of the stroke in the outline conversion, the shape of the stroke changes and becomes thicker.

This commit includes a new algorithm to correct this problem. A new `Keep Shape`  parameter allows you to disable it because, for artist reasons, it may be good to keep the old algorithm and change the shape.
2022-08-30 17:12:03 +02:00
Bastien Montagne
9cfa74087e Merge branch 'blender-v3.3-release' 2022-08-30 15:18:49 +02:00
Bastien Montagne
afa4f8f3ce LibOverride: Minor resync optimization by removing unuecessary processing.
Not much to gain here, but can make resync faster by a few percents when
dealing with linked overrides and such.
2022-08-30 15:18:17 +02:00
Bastien Montagne
34ff27025d Cleanup: Remove one level of indentation by early continue in a loop. 2022-08-30 15:18:17 +02:00
Bastien Montagne
f3186389b0 Fix T100586: libOverride resync could remove too many data-blocks.
Do not delete 'orphaned' overrides when their reference is missing
because the library file itself is missing.
2022-08-30 15:18:17 +02:00
Campbell Barton
fdc332981e Cleanup: simplify comparison, clarify comment 2022-08-30 21:20:26 +10:00
Campbell Barton
e0ab4b29a9 Merge branch 'blender-v3.3-release' 2022-08-30 21:07:31 +10:00
Campbell Barton
524d9a3e2f Fix error in operator poll functions
- PALETTE_OT_color_add: crashed without a brush.
- SCREEN_OT_actionzone: crashed without a window.
- PREFERENCES_OT_studiolight_show: exception when opening prefs failed.
2022-08-30 21:06:17 +10:00
Jacques Lucke
c7555372fe Merge branch 'blender-v3.3-release' 2022-08-30 12:51:12 +02:00
Julian Eisel
558a6a45b4 Cleanup: Avoid misleading Outliner tree element callback name
These functions used the term "find", which makes it sound like a lookup
callback, when in fact it would add elements to a set for further
processing. So use "collect" instead.
2022-08-30 12:24:17 +02:00
Jacques Lucke
34e30baedf Fix T100673: crash when using slide brush without attachment info
The slide brush requires attachment information on the curves.
Now a warning is shown instead of crashing Blender. The attachment
information can be generated by executing the
`Curves > Snap to Nearest Surface` operator.
2022-08-30 12:20:37 +02:00
Campbell Barton
702f112e77 Merge branch 'blender-v3.3-release' 2022-08-30 19:46:44 +10:00
Campbell Barton
a97ae83a09 Fix T100703: Crash in file reading with ID's referenced from the WM
Don't decrement ID reference counts as any ID references from the
window-managers will have already been freed.

Reviewed By: mont29

Ref D15808
2022-08-30 19:41:48 +10:00
Jeroen Bakker
d2c0d86a38 EEVEE-Next: Register render passes for compositor.
EEVEE-Next passes were rendered to the render result, but didn't appear
in the compositor. Reasoning is that when a render engine has the update
render passes callback registered it would not register any default
render passes. This callback is used to update the Render Layer node.

This patch implements the callback for EEVEE-Next with the render passes
that are already available. In the future the callback should be
extended. Note that AO/SHADOW render passes have been disabled for now
as they need to be converted to color buffers.
2022-08-30 10:26:10 +02:00
Antonio Vazquez
a65676e6e9 GPencil: Rename in Outline operator mode with material_mode
The old name `mode` was confusing because there was also a `view_mode`.
2022-08-30 09:37:26 +02:00
Antonio Vazquez
e7f1c73a4e GPencil: Add thickness parameter to Outline operator
Instead to use always a value of 1, now the thickness of the stroke perimeter can be set.

This thickness is added to the original perimeter, so using a big number can increase the global thickness of the stroke.
2022-08-30 09:37:26 +02:00
Campbell Barton
c29d63aa5e Cleanup: spelling in comments 2022-08-30 16:22:49 +10:00
Campbell Barton
24b8ccaa94 Cleanup: format 2022-08-30 16:22:49 +10:00
Hans Goudey
5ae3fa50e2 Cleanup: Remove misleading std::string reference binding
These functions that retrieve strings from assets return stringrefs.
Storing them as std::strings is unnecessary and relies on binding to
the const references.
2022-08-29 18:11:37 -05:00
Hans Goudey
6577d2df8c Cleanup: Use const for custom data layers 2022-08-29 17:00:46 -05:00
Hans Goudey
71b660571a Sculpt: Avoid creating mask and face set when remeshing
If these layers didn't exist on the original mesh, they would be created
from scratch and transferred anyway. That is inefficient because all the
work is pointless, and because creating these layers could slow down
subsequent sculpt operations.
2022-08-29 16:55:26 -05:00
Hans Goudey
dc92c5766f Merge branch 'blender-v3.3-release' 2022-08-29 14:55:04 -05:00
Hans Goudey
b814f64f4a Fix: Broken build with OpenVDB turned off
Problem with e3a6a2f412.
2022-08-29 14:50:26 -05:00
Tom Edwards
35df9f80b9 Fix T99576: Guard against empty names when removing attributes
It's possible for misbehaving scripts written before 3.3 to reach
this state and crash Blender. With this change, the error is reduced
to a Python exception.

Differential Revision: https://developer.blender.org/D15724
2022-08-29 14:45:55 -05:00
Pratik Borhade
68487cff95 Fix T98968: Node reroute tool doesn't add to frames
If reroute node lies in side the frame node boundaries then set
frame node as the parent of reroute.

Differential Revision: https://developer.blender.org/D15739
2022-08-29 14:45:01 -05:00
Pratik Borhade
50e5c78799 Fix T98968: Node reroute tool doesn't add to frames
If reroute node lies in side the frame node boundaries then set
frame node as the parent of reroute.

Differential Revision: https://developer.blender.org/D15739
2022-08-29 14:39:14 -05:00
Brecht Van Lommel
21acfbe348 Cleanup: move Cycles display driver context handling to render module
This is highly coupled to Blender logic so doesn't belong in Cycles.
2022-08-29 19:45:58 +02:00
Brecht Van Lommel
810e7c032c Cleanup: move part of render module to C++ 2022-08-29 19:45:58 +02:00
Nikita Sirgienko
805d1063a0 Cycles: Remove "return" and "assert" from oneAPI kernel code 2022-08-29 19:18:50 +02:00
Hans Goudey
dff15bb5bf Fix: Broken build with OpenVDB turned off
Problem with e3a6a2f412.
2022-08-29 12:12:16 -05:00
Bastien Montagne
999c5c5c8d Fix (studio-reported) crash when linking/appending data in some cases.
Recent refactor (rB7be1c8bbae76f49f) removed a null check in WM code,
that is mandatory in some cases like e.g. liboverride apply code on
linked data.
2022-08-29 17:25:09 +02:00
Jacques Lucke
1567dca657 Merge branch 'blender-v3.3-release' 2022-08-29 17:01:01 +02:00
Jacques Lucke
e3a6a2f412 Fix T99004: scaling volume down results in crash
OpenVDB crashes when the determinant of the grid transformation is
too small. The solution is too detect when the determinant is too small
and to replace the grid with an empty one. If possible the translation
and rotation of the grid remains unchanged.

Differential Revision: https://developer.blender.org/D15806
2022-08-29 17:00:08 +02:00
Damien Picard
9120c86c3f I18n: disambiguate and make a few more strings translatable
Those strings were at least partly disambiguated:
- Area
  - Zone
  - Measurement
- Ease
  - BBone Ease In / Out
- Back
  - Camera BG image depth
  - GP interpolate sequence
- Edge Crease
  - Theme
- Jitter
  - Brush
  - GPencil
  - Lens distorsion compositing node
- Cineon color management
  - Black
  - Gamma
  - White

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15791
2022-08-29 16:04:03 +02:00
Damien Picard
0db582c41c Add missing RNA text for the MeshUVLoop struct
The structures in rna_mesh.c all had a UI text which showed up in the
animation editors, except for MeshUVLoop.

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15803
2022-08-29 15:08:29 +02:00
Damien Picard
9bf5c37bee I18n: translate newly created node group sockets
Translate:
- new group socket names
  - default names Input and Output
  - on connecting a link from another node
- new geometry nodes input and output socket names

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15763
2022-08-29 14:26:10 +02:00
Alexander Gavrilov
9823a8f72b Weight Paint: use coordinates from normal evaluated mesh if same topology.
Weight and Vertex paint don't change coordinates and thus don't need
crazyspace data, which allows using coordinates from normal evaluated
meshes.

Since painting uses original topology, the deform only mesh is used,
but if the fully evaluated mesh has the same topology, it is preferred.
This is useful because not only Geometry Nodes, but even simple weight
computation modifiers are excluded from the deform only mesh evaluation.

Differential Revision: https://developer.blender.org/D15501
2022-08-29 14:10:31 +03:00
Antonio Vazquez
613b6ad9e5 GPencil: New conversion to outline in draw mode
This new option converts the stroke to outline perimeter as soon as is drawn.

If no alternative material is set, the actual material is used.

The algorithm is similar to the new operator in D15664

Reviewed By: pepeland

Differential Revision: https://developer.blender.org/D15738
2022-08-29 09:47:08 +02:00
Jeroen Bakker
377b81ac07 Fix compilation issue in MTLQueryPool::allocate_buffer.
This compilation issue happened due to multiple patches being handled at the same
time one overwriting a correction of the other.
2022-08-29 08:34:47 +02:00
Jeroen Bakker
c4d9dca4a6 Cleanup: Add missing override keyword in mtl_backend. 2022-08-29 08:31:56 +02:00
Hans Goudey
e0414070d9 Cleanup: Slightly improve virtual array implementation consistency
Previously the base virtual array implementation optimized for
common cases where data is stored as spans or single values.
However, that didn't make sense when there are already
sub-classes that handle those cases specifically. Instead,
implement the faster materialize methods for each class.
Now, if the base class is reached, it means no optimizations
for avoiding virtual function call overhead are used.

Differential Revision: https://developer.blender.org/D15549
2022-08-28 14:40:49 -05:00
Hans Goudey
67f3259c54 Curves: Avoid creating types array when unnecessary
When the curve type attribute doesn't exist, there is no reason to
create an array for it only to fill the default value, which will add
overhead to subsequent "add" operations. I added a "get_if_single"
method to virtual array to simplify this check. Also use the existing
functions for filling curve types.

Differential Revision: https://developer.blender.org/D15560
2022-08-28 14:33:03 -05:00
Campbell Barton
28750bcf7e Cleanup: replace NULL with nullptr for C++ files 2022-08-28 20:52:28 +10:00
Campbell Barton
7269ee4dbb Cleanup: use const FontBLF arguments 2022-08-28 20:46:53 +10:00
Campbell Barton
206272621e Merge branch 'blender-v3.3-release' 2022-08-28 20:21:32 +10:00
Campbell Barton
4694d497b7 Merge branch 'blender-v3.3-release' 2022-08-28 20:19:02 +10:00
Campbell Barton
ff78f79abc Merge branch 'blender-v3.3-release' 2022-08-28 20:18:58 +10:00