Commit Graph

99195 Commits

Author SHA1 Message Date
Omar Emara
3f6912ece2 Realtime Compositor: Implement Mask node
This patch implements the Mask node for the realtime compositor. The
evaluation of the mask is not GPU accelerated, but is cached as a form
of temporary implementation until we implement a GPU evaluator for
masks.

One limitation currently is that we do not redraw the viewport while the
mask is getting edited by the user, because always doing that will be
redundant in most situations, and conditioning the redraw requires a lot
of work that should be handled outside of this patch.

This is similar to the Texture node implementation in 151a53110c.

Pull Request: https://projects.blender.org/blender/blender/pulls/107464
2023-05-01 11:29:06 +02:00
Omar Emara
92983967cb Cleanup: Improve readability of Mask node flags
This patch improves the readability of the Mask node flags by using the
same naming conventions as other node flags.
2023-05-01 12:07:57 +03:00
Julian Eisel
f8d2156dda Fix #104722: Outliner renaming uses wrong item
The property value should be reset for the next operator execution, not
remembered. Also hide it from auto-generated UIs, this is an internal
property nothing meant for the user to edit.

Also see discussion in #105872.
2023-05-01 11:03:39 +02:00
Julian Eisel
20f54a5698 Asset Browser: Let "Clear Asset" act on entire selection
Users were confused that "Clear Asset" would only act on the clicked on
asset, not the entire selection. They would have to clear them one by
one, which can be quite annoying. The previous commit prepared the asset
clearing operator for this, so all this commit has to do is expose the
selected IDs to context.
2023-05-01 10:47:55 +02:00
Julian Eisel
f22e2bab72 Assets: Prefer selected IDs over single active ID for asset mark/clear
Shouldn't cause user visible changes.

Usually batch operations are more handy, so prefer editing multiple
items over a single one. That is, act on the whole selection not the
active item. Mark and clear will now respect this when retrieving IDs
from context, however right now there's no case where actually both
selected and the active ID are exposed in context. Because of this there
shouldn't be a user visible change until the following commit.
2023-05-01 10:47:55 +02:00
Jason Fielder
36e1ebc78d Metal: Resolve runtime issues with texture views
When creating a texture view, Metal may require that the original
GPUTexture state is modified in some way. This may be a result
of deferred creation, or, to cache the texture view against the
source.

As a result, GPUTexture passed into GPU_texture_create_view
cannot be const.

Small fixes have also been made in the Metal texture
implementation to ensure correct function of texture views.

Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/107167
2023-05-01 09:14:00 +02:00
Campbell Barton
358ce4f52b Fix more crashes attempting to run operators in unexpected contexts
Add missing NULL checks for:

- OBJECT_OT_transform_to_mouse
- GPENCIL_OT_time_segment_remove
2023-04-30 15:23:43 +10:00
Campbell Barton
5d59f4ad7b Cleanup: use term "Delete" for sequence strips
Use consistent terminology with the rest of Blender,
the menu items already overrode this with the term "Delete".
2023-04-30 15:10:49 +10:00
Campbell Barton
44d13c787d Fix various crashes attempting to run operators in unexpected contexts
Use bl_run_operators to detect cases when operators would crash
when run in an expected context for the following operators:

- GIZMOGROUP_OT_gizmo_select
- GIZMOGROUP_OT_gizmo_tweak
- GPENCIL_OT_time_segment_move
- OBJECT_OT_add_named
- OBJECT_OT_data_instance_add
- OBJECT_OT_drop_named_material
- SCULPT_OT_mask_by_color
- SEQUENCER_OT_delete
- SEQUENCER_OT_rename_channel
- SEQUENCER_OT_retiming_handle_move
- SPREADSHEET_OT_change_spreadsheet_data_source
- UI_OT_drop_color

Note that some of these situations users were unlikely to encounter,
however there were cases script authors could run into such as deleting
sequence strips without a region or masking by color without a 3D view.
2023-04-30 15:08:27 +10:00
Campbell Barton
91325378cb Fix potential buffer overflow with FileListEntryPreview::filepath 2023-04-30 15:08:27 +10:00
Campbell Barton
635cccc54e Fix curve-sculpt invoke function accessing the wrong brush
The brush used to check if curve sculpt should run didn't necessarily
match the brush which was used for curve sculpt.
2023-04-30 15:08:27 +10:00
Campbell Barton
0a7f2486ec Fix apply as shape operator accessing properties that don't exist 2023-04-30 15:08:27 +10:00
Campbell Barton
951c31e258 Fix use-after-free error in sculpt color filter 2023-04-30 15:08:26 +10:00
Campbell Barton
03ad5c17e6 Fix crash accessing the image clipboard in background mode 2023-04-30 15:08:26 +10:00
Campbell Barton
cfe25e6efb Use native path separators for run-time generated paths 2023-04-30 15:08:26 +10:00
Campbell Barton
1c026befca Cleanup: spelling in comments, remove annotations that aren't validated 2023-04-30 15:08:26 +10:00
Chris Blackbourn
5c1c45cd59 UV: Improve packing efficiency by rotating to minimum square
After primary packing is completed, perform a deep earch for any
rotation of the entire layout which improves efficiency even further.

This can sometime provides *optimal* packing results. e.g. When packing
a single island, the layout will now touch all 4 sides of the unit square.
2023-04-30 16:55:39 +12:00
Yonatan Maor
adb63a5102 Gizmo: Add anti aliasing to transform constraints
Transform constraints were being drawn on screen without anti-aliasing,
now fixed to make them look smoother.
See #107038

Adding a comparison of before and after the change

Pull Request: https://projects.blender.org/blender/blender/pulls/107394
2023-04-29 22:06:39 +02:00
Chris Blackbourn
ca00cb5470 Cleanup: format 2023-04-29 13:50:23 +12:00
Campbell Barton
d145dfdae0 Fix #107443 movie clip fails to load
Regression with incorrect sizeof argument to BLI_path_sequence_encode.

[0]: 6701d24084
2023-04-29 11:31:16 +10:00
Joseph Eagar
2d2f4d9d28 Cleanup: Rename StrokeCache.original to .accum
Note: the value is inverted, StrokeCache.accum = !StrokeCache.original.
2023-04-28 17:58:26 -07:00
Joseph Eagar
15d2487e26 Sculpt: Fix #105303: improper setting of SculptCache.original
I'm going to rename this in a seperate commit
2023-04-28 17:53:47 -07:00
Chris Blackbourn
69d52c5f1c UV: Fix uv packing overflow with fraction margin method
When UV Packing with the `fraction` margin method, if the UVs
overflowed the unit square, the UVs could sometimes overlap.

(island_index was incorrect.)
2023-04-29 10:25:40 +12:00
Chris Blackbourn
bf56df3236 UV: Add new packing option, scale_to_fit
When `scale_to_fit` is enabled, the existing behavior is used,
UVs will be scaled to fill the unit square.

If disabled, UVs will not be rescaled. They will be packed to the
bottom-left corner, possibly overflowing the unit square, or not
filling space.
2023-04-29 09:50:33 +12:00
Harley Acheson
a20bb83c21 Fix 3D text selection & cursor mismatch when not on curve
Commit 5c184525ed improved text cursor
placement when text is on a curve, but when not on a curve it is now
on the baseline. This corrects for that, placing 25% below baseline.
2023-04-28 14:12:56 -07:00
Chris Blackbourn
609010f5c0 Cleanup: format 2023-04-29 08:41:33 +12:00
Damien Picard
44103f5529 I18n: improve geometry nodes field tooltips
Node socket tooltips suffered from several issues.

- Some could not be translated because they were not properly
  extracted, so extraction macros were added.

- Some were extracted but included newlines at the end which did not
  get translated, such as `ss << TIP_("Geometry:\n")`, changed to
  `ss << TIP_("Geometry:") << "\n"`.

- Some translations were not functional, such as:
  `TIP_(attributes_num == 1 ? " Named Attribute" : " Named Attributes");`
  because `TIP_()` needs to be around a single string.

- Some extraction macros had no effect and were removed, such as:
  `.description(N_(leading_out_description));`
  This is a no-op macro which can be used only around a string literal.

Pull Request: https://projects.blender.org/blender/blender/pulls/107257
2023-04-28 21:37:33 +02:00
Germano Cavalcante
e33974effb Fix Auto Depth not working
Error in 67203c0ec8

The wrong Auto Depth flag was being read.
2023-04-28 16:38:15 -03:00
Hans Goudey
96fd14a65f Cleanup: Fix typo in mesh sample function name 2023-04-28 14:45:22 -04:00
Hans Goudey
bec033e057 Cleanup: Simplify and deduplicate mesh sampling code
It arguably reads easier if simple operations like reading from indices
of an array don't each get their own line. Also the same corner
attribute sampling was repeated in a few places. And add a new
function to sample normals from the corner domain, and use
lower level arguments to the lower level functions (i.e. not just
a mesh pointer, but the necessary data arrays).
2023-04-28 14:45:22 -04:00
Hans Goudey
f8cc6cc866 Cleanup: Simplify passing empty anonymous attribute set 2023-04-28 14:45:22 -04:00
Hans Goudey
696b56c1da Cleanup: Add note about adding attributes while iterating 2023-04-28 14:45:22 -04:00
Hans Goudey
0a5f0890cc Cleanup: Use helper function to sample normals when adding curves 2023-04-28 14:45:22 -04:00
Harley Acheson
b367a2b5f9 UI: Measure/Ruler Text Position
Small improvements to the placement of text with Ruler tool.

Pull Request: https://projects.blender.org/blender/blender/pulls/107350
2023-04-28 20:25:20 +02:00
Hans Goudey
bea6391188 Fix: Wrong logic in recent extrude node fix
A local change that I forgot to add to the commit before pushing.
2023-04-28 14:14:32 -04:00
Hans Goudey
060216ac31 Cleanup: Implement "make available" for extrude node individual input
Since the faces mode is already the default, this won't change
anything, but it makes sense to have for consistency anyway.
2023-04-28 14:00:10 -04:00
Hans Goudey
82769653f8 Cleanup: Use short2 for custom normals, simplify access
Use a span instead of a pointer, which allows using `fill_indices`
to set values and using the assign operator in the future.
2023-04-28 14:00:10 -04:00
Hans Goudey
5ce4447f02 Cleanup: Remove unnecessary vertex normal custom data masks
These are handled lazily now, these masks have no effect.
2023-04-28 14:00:10 -04:00
Hans Goudey
0f47722d82 Fix: Extrude node propagates all anonymous attributes
Usually anonymous attributes are removed earlier, but otherwise
the extrude node can end up doing extra work.We need to retrieve the
propagation set and remove not-propagated attributes. And also fix
a case where in vertex mode, the offsets array could be freed when
the mesh is resized.
2023-04-28 14:00:10 -04:00
Harley Acheson
d1219b727c Fix #97530: Overlapping Content Causing Region Scrolling
Selecting filter in NLA/Graph Editor causes scrolling in the region
below it. This PR makes `UI_but_ensure_in_view` not occur if the block
has UI_BLOCK_CLIP_EVENTS.

Pull Request: https://projects.blender.org/blender/blender/pulls/107404
2023-04-28 19:06:30 +02:00
Jacques Lucke
7d38cef6d1 Geometry Nodes: use new BitGroupVector to find attribute propagation sets
A `BitGroupVector` is a compact data structure that allows storing multiple
bits per element, for example 5 bits per vertex. The implementation is
mostly just a wrapper around `BitVector`. There is some additional logic
to make sure that the bit span of every element is bounded (according
to the `is_bounded_span` function). This makes it more efficient to operate
on groups as a whole (e.g. `or` one group into another). In some sense,
this data structure can also be interpreted as a 2D bit array. Functions
like `append` can be added when they become necessary.

The new data structure is used to replace some `MultiValueMap` in
geometry nodes. This simplifies the code.
2023-04-28 16:54:43 +02:00
Hans Goudey
d6c61ccadc Cleanup: Extract function to make extend node declaration 2023-04-28 10:24:32 -04:00
Hans Goudey
098e58ea24 Attributes: Allow attribute API to create non-deleteable attributes
This can be useful to allow creating these core attributes with shared
arrays. Otherwise CustomData has to be used directly, which is nice
to avoid. This was done in e45ed69349, but not everywhere.
2023-04-28 10:24:32 -04:00
Jacques Lucke
fee9a3796c Cleanup: Add not equal operator to compute constext hash 2023-04-28 10:24:32 -04:00
Jacques Lucke
ac1827edda BLI: Add utility method to check if CPPType matches multiple types 2023-04-28 10:24:32 -04:00
Hans Goudey
67700ced54 BLI: Add "take front" and "take back" methods to bit spans
This is consistent with `Span`, and also allows returning a bounded
bit span when taking the front of an existing bounded span, which
can simplify using optimized bit processing.

Pull Request: https://projects.blender.org/blender/blender/pulls/107441
2023-04-28 16:14:03 +02:00
Germano Cavalcante
6beaf1dc7d Fix error in recent navigation refactor
Error in 67203c0ec8

The modal zoom operation was always being activated.
2023-04-28 11:11:13 -03:00
Hans Goudey
5a1013f6a8 Fix #106289: Copy optimal display edges in mirror, array modifiers
These aren't propagated as attributes since interpolating them with the
generic rules often gives strange results, and they're intended to as
an optimization. Though theoretically it would be nice if this
copying became more generic in the future.
2023-04-28 10:05:57 -04:00
Hans Goudey
b87ccedd75 BLI: Add bit span operations and bounded bit spans
Most of this patch is by Jacques Lucke, from the simulation branch.

This commit adds generic expression evaluation for bit spans, helping
to generalize the optimizations that avoid processing a single bit
at a time. Operations like "for each 1 index", "or", and "and" are
already implemented in this pull request. Bits in full integers are
processed 64 at a time, then remaining bits are processed all at once.
The operations allow implementing a `copy_from` method for bit spans.

Currently this optimized evaluation is only implemented for simpler
bounded bit spans. Bounded bit spans have constraints on their bit
ranges that make them more efficient to process. Large spans must start
at the beginning of the first int, and small spans must start and end
within the first int.

Knowing these constraints at compile time reduces the number of edge
cases in the operations, but mainly allows skipping alignment between
multiple spans with different offsets.

Pull Request: https://projects.blender.org/blender/blender/pulls/107408
2023-04-28 15:43:34 +02:00
Germano Cavalcante
d74f3895e7 Overlay: do not draw grids with undefined units
The `ED_view3d_grid_steps` function creates steps of units other than
those defined in `unit.c`.

This seems to be used for grid drawing in order to draw a unit after
the miles (in this case it would be something like 10 miles).

But that doesn't seem right as it's an undefined unit.

Therefore, the solution is not to create these different unit values.

The change in the overlay is that the softer grid that used to
correspond to 10 miles now corresponds to mile.

Pull Request: https://projects.blender.org/blender/blender/pulls/107405
2023-04-28 14:38:38 +02:00