Commit Graph

94096 Commits

Author SHA1 Message Date
Campbell Barton
42698b2dd9 Cleanup: use enum type for argument 2022-08-12 11:02:37 +10:00
Campbell Barton
d4a082bc70 Cleanup: use short names for verts & polys as they're unambiguous
Follow conventions used in most existing code.
2022-08-12 10:56:27 +10:00
Campbell Barton
0c0c361123 Cleanup: replace magic number with flag 2022-08-12 10:48:15 +10:00
Campbell Barton
8649ac0ca8 Cleanup: early exit ui_but_extra_operator_icon_mouse_over_get
Early exit when the button has no extra icons, avoiding a redundant
transformation from mouse to button coordinates.
2022-08-12 10:41:39 +10:00
Campbell Barton
a2247c271c Cleanup: typo in selection check
In practice this is harmless as in most cases checking selected
vertices is enough, however as the intention is to check all 3 elements
it's best to do so.
2022-08-12 10:37:28 +10:00
Campbell Barton
282a861e11 Fix incorrect custom-data layer access for hide layers
Error in [0], missed in review.

[0] 2480b55f21
2022-08-12 09:16:09 +10:00
Campbell Barton
62d1ed0120 Cleanup: replace term face with poly
Be consistent with naming to avoid mixing MPoly/MFace.
2022-08-12 08:57:38 +10:00
Hans Goudey
344919240c Fix: Broken mesh hide status RNA accessors
Mistake in 2480b55f21.
Also deduplicate some of the code to find the indices of mesh elements.
2022-08-11 17:56:08 -04:00
Harley Acheson
d2b1e4712d BLF: Mutex Lock Glyph Cache Per Font, Not Global
Only lock access to our glyph caches per-font, rather than globally.
Also upgrade from spinlocks to mutexes.

See D15644 for more details.

Differential Revision: https://developer.blender.org/D15644

Reviewed by Brecht Van Lommel
2022-08-11 12:52:07 -07:00
Hans Goudey
2fc7e15164 Fix: Use of uninitialized variable in recent commit
Mistake in 2480b55f21.
2022-08-11 14:40:42 -04:00
Brecht Van Lommel
ef5a44df2d Merge branch 'blender-v3.3-release' 2022-08-11 19:28:03 +02:00
Brecht Van Lommel
6161b8dc63 Fix T100130: animation player crash on exit
GPU_exit is now expected to run within an active GPU context.

Also run BLF_exit and IMB_exit first they can use GPU resources and gave
ASAN errors. And remove redundant GPU_shader_free_builtin_shaders already
handled by GPU_exit.
2022-08-11 19:23:15 +02:00
Hans Goudey
90e027e594 Curve: Simplify legacy curve conversion to mesh
Build the mesh directly instead of returning arrays which need to be
copied to a new mesh. Also decrease the scope of some variables.
2022-08-11 13:09:55 -04:00
Hans Goudey
2480b55f21 Mesh: Move hide flags to generic attributes
This commit moves the hide status of mesh vertices, edges, and faces
from the `ME_FLAG` to optional generic boolean attributes. Storing this
data as generic attributes can significantly simplify and improve code,
as described in T95965.

The attributes are called `.hide_vert`, `.hide_edge`, and `.hide_poly`,
using the attribute name semantics discussed in T97452. The `.` prefix
means they are "UI attributes", so they still contain original data
edited by users, but they aren't meant to be accessed procedurally by
the user in arbitrary situations. They are also be hidden in the
spreadsheet and the attribute list by default,

Until 4.0, the attributes are still written to and read from the mesh
in the old way, so neither forward nor backward compatibility are
affected. This means memory requirements will be increased by one byte
per element when the hide status is used. When the flags are removed
completely, requirements will decrease when hiding is unused.

Further notes:
 * Some code can be further simplified to skip some processing when the
   hide attributes don't exist.
 * The data is still stored in flags for `BMesh`, necessitating some
   complexity in the conversion to and from `Mesh`.
 * Access to the "hide" property of mesh elements in RNA is slower.
   The separate boolean arrays should be used where possible.

Ref T95965

Differential Revision: https://developer.blender.org/D14685
2022-08-11 12:59:06 -04:00
Aras Pranckevicius
4cbd799373 obj: support importing multiple files at once
Implemented the same way as STL or GPencil SVG importers: loop over
the input files, import one by one.

Has been requested by the community for quite a long time
(e.g. https://blender.community/c/rightclickselect/Jhbbbc/), as well
as 3rd party addons to implement just this
(https://github.com/p2or/blender-batch-import-wavefront-obj).
2022-08-11 17:05:54 +03:00
Aras Pranckevicius
c4a0438522 Merge branch 'blender-v3.3-release' 2022-08-11 15:54:04 +03:00
Aras Pranckevicius
0a096f2be2 Fix T98781: OBJ exporter wrongly writing default material socket values when textures are present
Report T98781 and part of T97642: the MTLMaterial info only captures
image nodes and the default socket values. When the image information
is present, do not emit the socket defaults - the .MTL spec states
they are multiplied together, but the default value is not used
in blender when the socket is connected.

Also contains svn tests repository update to extend the test coverage,
and update test expectation outputs.
2022-08-11 15:51:36 +03:00
Campbell Barton
8bc76bf4b9 Fix T66088: Modifier keys ignored when the window doesn't have focus
Always use modifier keys from the active window, as changes to the
modifiers aren't sent to inactive windows.

Also resolves modifier keys being lost on window de-activation.
Activating the window again would check the previous state of the
modifiers which was always cleared as of [0],
now clearing is no longer needed.

[0]: 472595f1d3
2022-08-11 15:59:40 +10:00
Harley Acheson
51381c94d8 BLF: Fallback Broken After Cache Removal
Font fallback feature not working after reverting the implementation
of the cache system. Missing an blf_ensure_face before
FT_Get_Char_Index. Otherwise glyphs not found in fonts without faces.

Own Code
2022-08-10 20:50:49 -07:00
Chris Blackbourn
f35d671f46 Cleanup: refactoring uvislands to prepare for python api
Add element_map->island_total_uvs.
Add element_map->island_total_unique_uvs.
Simplify callers based on new members.
Add comments.

Resolves: D15598
2022-08-11 14:20:44 +12:00
Campbell Barton
d52d71b834 Cleanup: doxy parameters, use static set instead of tuple 2022-08-11 11:17:24 +10:00
Campbell Barton
fb8e604ff4 Merge branch 'blender-v3.3-release' 2022-08-11 11:10:13 +10:00
Campbell Barton
ed55054e57 Fix T100204: RMB select (with "Select Tool") causes edit-mesh conflict
When RMB select activated the selection tool, Alt-RMB would both
tweak and loop-select.

Fix/workaround this by passing though 'enumerate' unless the option
can be used (when selecting objects or armatures).
2022-08-11 11:06:54 +10:00
Campbell Barton
9015cba5ce Cleanup: clang-tidy uv_parametrizer.cc 2022-08-11 11:03:23 +10:00
Campbell Barton
d9c2922a14 Cleanup: remove redundant MEM_SAFE_FREE
MEM_SAFE_FREE isn't necessary when the memory is known to be allocated
and clearing the value afterwards isn't necessary.
2022-08-11 10:57:14 +10:00
Campbell Barton
4641d6d7b0 Cleanup: check if the camera was moved before auto-key in smooth-view
There is no need to attempt to auto-key when the camera isn't moved.
2022-08-11 10:31:50 +10:00
Campbell Barton
b9b45c2036 Cleanup: pass const arguments to smooth-view functions
Also move region redraw tag out of view3d_smoothview_apply_with_interp
as it's not always needed.
2022-08-11 10:05:21 +10:00
Campbell Barton
07deb9a71b Cleanup: replace magic number 2022-08-11 09:52:49 +10:00
Campbell Barton
32c8a28720 Cleanup: spelling in comments 2022-08-11 09:51:19 +10:00
Campbell Barton
d68018cf10 License headers: add missing license header 2022-08-11 09:35:02 +10:00
Chris Blackbourn
fb7ef40006 Cleanup: refactoring uvislands to prepare for python api
Add #bm_uv_ensure_head_table

See also: D15598
2022-08-11 11:20:00 +12:00
Chris Blackbourn
e19986482f Cleanup: reduce asan lint and clang-tidy warnings on uv_parametrizer 2022-08-11 11:10:37 +12:00
Chris Blackbourn
13c5f6e08f Cleanup: refactoring uvislands to prepare for python api
Migrate island calculation to #bm_uv_build_islands.
Simplify connectedness calculation.
Reduce memory pressure.
No functional changes.

See also: D15598
2022-08-11 08:24:37 +12:00
Aras Pranckevicius
bb3174e15b Merge branch 'blender-v3.3-release' 2022-08-10 18:06:13 +03:00
Aras Pranckevicius
8c59b93505 obj: Also find .mtl images by their basename, if all else fails (T77801)
While T77801 itself is working as expected in the new C++ obj
importer, the repro file there uses absolute paths to material images,
yet the images themselves are right there in the current folder.

The old python based importer did find them, since it was doing a
really complex image search. My understanding is that while C++
importer was developed, it was decided to not do that -- however
just the "basename file in the mtl directory" sounds simple enough
and gets the repro case file work correctly.
2022-08-10 18:03:39 +03:00
Omar Emara
5689dda6f7 Compositor: Limit C linkage of cryptomatte functions
Most of the functions in the compositor cryptomatte file are declared
with extern "C" linkage, which can cause symbol conflict even when
functions exist in separate namespaces. This is not actually necessary,
as the declaration of the few functions that require C linkage are
already declared as such in the header file, so this patch removes the
extern C scope from that file.

Differential Revision: https://developer.blender.org/D15656

Reviewed By: Clement Foucault
2022-08-10 14:58:51 +02:00
Omar Emara
27b9538e44 Realtime Compositor: Fix missing include in Displace node
The displace node was missing an include, which sometimes compiled fine
due to unity builds. This patch adds that missing include.
2022-08-10 14:10:07 +02:00
Omar Emara
9596907363 Realtime Compositor: Allow in material preview mode
This patch allows the viewport compositor to operate in Material Preview
mode.

Differential Revision: https://developer.blender.org/D15655

Reviewed By: Clement Foucault
2022-08-10 13:30:31 +02:00
Omar Emara
79953d5482 Realtime Compositor: Fix clang tidy warnings
Fix a number of warnings reported by Clang Tidy in the realtime
compositor's code.

Differential Revision: https://developer.blender.org/D15654

Reviewed By: Clement Foucault
2022-08-10 13:04:36 +02:00
Brecht Van Lommel
f9589fab60 Render: remove camera shift hard limits
There is no need for these to be limited to -10..10, soft limits are enough.

Contributed by fundorin.

Differential Revision: https://developer.blender.org/D15650
2022-08-10 13:02:32 +02:00
Aras Pranckevicius
089216067f Merge branch 'blender-v3.3-release' 2022-08-10 13:36:48 +03:00
Aras Pranckevicius
d76583cb4a Fix T100302: New OBJ importer produces too many vertices when faces don't span a continuous range
As part of the previous fix (D15410), the importer got code to track
min & max vertex indices used as part of the mesh faces. However, if
faces refer to a "sparse" (i.e. non-contiguous) subset of all vertices,
then the imported mesh would contain all the vertices between min & max
range.

Replace that with proper tracking of actually used vertex indices
for each imported mesh. Fixes T100302.

This does affect import performance a tiny bit, e.g. importing Blender
3.0 splash scene goes 21.7s -> 22.1s, and importing rungholt.obj
goes 2.37s -> 2.48s.

Importer related tests have a bunch of vertex changes in them, since
now vertices are added in the order that the faces are referring
to them. Which incidentally matches the order that the Python based
importer was creating them too.
2022-08-10 13:34:58 +03:00
Sergey Sharybin
54c26f58d0 Cleanup: Fix warning in release builds 2022-08-10 11:02:38 +02:00
Sergey Sharybin
f12f7800c2 Depsgraph: Optimize evaluation of dependencies of disabled modifiers
Solves long-standing issue when dependencies of disabled modifiers are
evaluated.

Simple test case: no drivers or animation. Manually enabling modifier
is expected to bring FPS up, enabling modifier will bring FPS (sine
evaluation can not be avoided)

F13336690

More complex test case: modifier visibility is driven by an animated
property. In am ideal world FPS during property being zero is fast
and when property is 1 the FPS is low.

F13336691.

Differential Revision: https://developer.blender.org/D15625
2022-08-10 11:02:38 +02:00
Sergey Sharybin
cfbe11563a Depsgrapg: Add per-modifier graph nodes
No functional changes expected.
2022-08-10 11:02:38 +02:00
Omar Emara
fad112be1c Realtime Compositor: Add stub unsupported nodes
This patch adds a stub implementation for all unsupported nodes. The
inputs are passed through to the outputs where it make sense, while
other outputs will be allocated a single zero value.

This seems to be preferred by users as opposed to stopping execution and
displaying an error message.

Differential Revision: https://developer.blender.org/D15464

Reviewed By: Clement Foucault
2022-08-10 10:36:57 +02:00
Omar Emara
40c45985a9 Realtime Compositor: Add basic distort nodes
This patch implements the following nodes for the realtime compositor:

- Crop node.
- Flip node.
- Lens distort node.
- Rotate node.
- Transform node.
- Translate node.

Differential Revision: https://developer.blender.org/D15231

Reviewed By: Clement Foucault
2022-08-10 10:30:27 +02:00
Omar Emara
c014021802 Realtime Compositor: Add basic matte nodes
This patch implements the following nodes for the realtime compositor:

- Box mask node.
- Channel matte node.
- Chroma matte node.
- Color matte node.
- Color spill node.
- Difference matte node.
- Distance matte node.
- Ellipse matte node.
- Luminance matte node.

Differential Revision: https://developer.blender.org/D15230

Reviewed By: Clement Foucault
2022-08-10 10:21:18 +02:00
Omar Emara
b5df7a02ac Realtime Compositor: Add basic convert and vector nodes
This patch implements the following nodes for the realtime compositor:

- Map range node.
- Map value node.
- Math node.
- Normal node.
- Alpha convert node.
- Separate color node.
- Combine color node.
- Separate XYZ node.
- Combine XYZ node.
- Separate RGBA node.
- Combine RGBA node.
- Separate HSVA node.
- Combine HSVA node.
- Separate YCCA node.
- Combine YUVA node.
- Set alpha node.
- Switch node.
- Switch view node.
- RGB to BW node.
- Color ramp node.

Differential Revision: https://developer.blender.org/D15229

Reviewed By: Clement Foucault
2022-08-10 10:09:35 +02:00
Omar Emara
6109ad6cce Realtime Compositor: Add basic color nodes
This patch implements the following nodes for the realtime compositor:

- Alpha over node.
- Bright contrast node.
- Color balance node.
- Color correction node.
- Exposure node.
- Gamma node.
- Hue correct node.
- Hue saturation value node.
- Invert node.
- Mix node.
- Posterize node.
- Time curve node.
- Vector curve node.

Differential Revision: https://developer.blender.org/D15228

Reviewed By: Clement Foucault
2022-08-10 09:58:44 +02:00