Commit Graph

92194 Commits

Author SHA1 Message Date
Hans Goudey
8852191b77 Curves: Interpolate point count in add brush
This commit adds an option to interpolate the number of control points
in new curves based on the count in neighboring existing curves. The
idea is to provide a more automatic default than manually controlling
the number of points in a curve, so users don't have to think about
the resolution quite as much.

Internally, some utilities for creating new curves are extracted to a
new header file. These can be used for the various nodes and operators
that create new curves.

The top-bar UI will be adjusted in a separate patch, probably moving
all of the settings that affect the size and shape of the new curves
into a popover.

Differential Revision: https://developer.blender.org/D14877
2022-05-10 18:28:02 +02:00
Aras Pranckevicius
6f7959f55f Merge branch 'blender-v3.2-release' 2022-05-10 19:12:02 +03:00
Aras Pranckevicius
3bc037a7eb Fix T96399: New 3.1 OBJ exporter is missing Path Mode setting
New OBJ exporter is missing "Path Mode" setting for exporting .mtl
files. The options that used to be available were: Auto, Absolute,
Relative, Match, Strip Path, Copy. All of them are important. The new
behavior (without any UI option to control it) curiously does not match
any of the previous setting. New behavior is like "Relative, but to the
source blender file, and not the destination export file".

Most of the previous logic was only present in Python based code
(bpy_extras.io_utils.path_reference and friends). The bulk of this
commit is porting that to C++.

Reviewed By: Howard Trickey
Differential Revision: https://developer.blender.org/D14906
2022-05-10 18:58:10 +03:00
Bastien Montagne
9c2613d1b6 Merge branch 'blender-v3.2-release' 2022-05-10 17:57:41 +02:00
Bastien Montagne
1dd1772419 LibOverride: Fix memory leak in resyncing code. 2022-05-10 17:43:01 +02:00
Bastien Montagne
0134ab4b56 LibOverride: Fix bad ID getting hierarchy root updated.
Followup to rB6c679aca1770c37.
2022-05-10 17:42:00 +02:00
Bastien Montagne
6c679aca17 LibOverride: Make process checking validity of hierarchy roots more robust.
Code was not really designed to hanlde corrupted (e.g. local ID) root
hierarchies, now it should handle better those invalid cases and restore
proper sane situation as best as possible.

Fixes crashes with some corrupted files from Blender studio.
2022-05-10 17:32:31 +02:00
YimingWu
cd349dc402 LineArt: Use thread safe bound box.
The old method is not thread safe, which will lead to minor
memory leaks. This patch fixed that.

Reviewed By: Sebastian Parborg (zeddb)

Differential Revision: https://developer.blender.org/D14904
2022-05-10 22:01:07 +08:00
Jeroen Bakker
c60b570841 Remove debug code enabled in previous commit. 2022-05-10 15:54:59 +02:00
Jeroen Bakker
d9d81cb1ff 3d texture painting: Use center uv pixel as anchor.
Previously the bottom left of a pixel was used during pixel extraction what resulted in
that the pixels were moved a bit to the bottom left. By using the center uv pixel the
extracted pixels are more balanced and would improve future features like seam bleeding.
2022-05-10 15:52:28 +02:00
Campbell Barton
b4b85c5ce2 Merge branch 'blender-v3.2-release' 2022-05-10 23:04:37 +10:00
Campbell Barton
4c3e91e5f5 Fix T96520 Node editor: Tweak fails with unselected nodes
Use the same method for node selection and dragging that is used
in the 3D viewport and UV editor. Instead of relying on a modal
operator - use the keymap to handle click/drag events.

Details:

Failure to transform unselected nodes was caused by [0] & [1] however
detecting drag relied on specific behavior which I don't think we should
be depending on.

This error happened when selection was defined both in the key-map for
the tool and for the node-editor.

- The left mouse button would activate selection in both the tool
  and "Node Editor" keymap.

- The first selection would return `FINISHED | PASS_THROUGH` when
  selecting a previously unselected node.

- The same PRESS would trigger a second selection would return
  `RUNNING_MODAL | PASS_THROUGH`,
  (starting a NODE_OT_select as a modal operator).

  - In 3.1 (with tweak events) the modal operator would then exit and
    fall-back to the tweak event which would transform the selected
    nodes.

  - In 3.2 (as of [0]) the PRESS that starts the modal operator is
    considered "handled" and prevents drag event from being detected.

The correct behavior in this case isn't obvious:
If a modal operator starts on pressing a button, using that same the
release to generate drag/click events is disputable.

Even in the case or 3.1 it was inconsistent as tweak events were
generated but click events weren't.

Note: after investigating this bug it turns out a similar issue already
existed in 2.91 and all releases afterwards. While the bug is more
obscure, it's also caused by the tweak event being interrupted as
described here, this commit resolves T81824 as well.

[0]: 4d0f846b93
[1]: 4986f71848

Reviewed By: Severin

Ref D14499
2022-05-10 23:01:56 +10:00
Campbell Barton
9173dd24ad Fix for crash opening the file selector multiple times
This is part of a fix for T88570, where the file selector would crash
when activated multiple times.

Calling save multiple times would free the operator, leaving a dangling
pointer which was used when panels were visible that accessed the
"active_operator".

Reviewed By: Severin

Ref D14905
2022-05-10 22:56:22 +10:00
Campbell Barton
502c3d6c21 Cleanup: remove non-existent include
guardedalloc was already included.
2022-05-10 22:56:03 +10:00
Jeroen Bakker
15021968c1 DrawManager: Hide lock acquire behind experimental feature.
The acquire locking of the draw manager introduced other issues.
The current implementation was a hacky solution as we know that the
final solution is something totally different {T98016}.

Related issues:
* {T97988}
* {T97600}
2022-05-10 14:31:20 +02:00
Hans Goudey
b38cd1bcbe Fix: Missing curves type count cache update in add brush 2022-05-10 14:27:36 +02:00
Jeroen Bakker
4ffeb2d449 DrawManager: Hide lock acquire behind experimental feature.
The acquire locking of the draw manager introduced other issues.
The current implementation was a hacky solution as we know that the
final solution is something totally different {T98016}.

Related issues:
* {T97988}
* {T97600}
2022-05-10 14:01:02 +02:00
Clément Foucault
3893ba5d67 Merge branch 'blender-v3.2-release' 2022-05-10 13:09:12 +02:00
Julian Eisel
7849b56c3c Fix T88570: Crash when saving after pressing ctrl+S twice.
Existing code to replace the file operation was failing when done from
the window for the file operation itself.

Basically, this patch does two things:
- Implement a well defined window context to use as the "owner" or
  "root" of the File Browser. This will be used for managing the File
  Browser and to execute the file operation, even after the File Browser
  was closed.
- Ensure the context is valid when dealing with file File Browser event
  handlers.

Previously the window context just wasn't well defined and just happened
to work well enough in most cases. Addressing this may unveil further
issues, see T88570#1355740.

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

Reviewed by: Campbell Barton
2022-05-10 12:36:43 +02:00
Clément Foucault
061995775f Fix T95298 ImageEditor: Multi-view images fail to display properly
This was because the shader had wrong output slot order.

This also add a note about why the order is reversed compared to the
texture binding.
2022-05-10 12:33:18 +02:00
Hans Goudey
a74a267767 Cleanup: Move mesh primitive cube to the geometry module
This allows easy reuse elsewhere in Blender.
2022-05-10 10:21:42 +02:00
Jeroen Bakker
77c0e79805 Merge branch 'blender-v3.2-release' 2022-05-10 10:01:10 +02:00
Hans Goudey
2a2e47b20c Curves: Add disabled message for add empty hair operator
Ref 2ba081f59b
2022-05-10 09:41:04 +02:00
Jeroen Bakker
439f86ac89 Fix T97272: Lag when resizing viewports.
Viewports where cleared explicitly due to compatibility reasons with Intel iGPUs.
This slowed down other platforms as well, this wasn't noticeable on all platforms.

This patch will be more selective when to enable the workaround.
Currently only for iGPUs on Mac + Linux.
2022-05-10 08:48:51 +02:00
Jeroen Bakker
08a39d32a9 Merge branch 'blender-v3.2-release' 2022-05-10 08:30:56 +02:00
Jeroen Bakker
11aa237858 Eevee: Fix GLSL compilation error.
Introduced by {35594f4b92fa4cbb5b848f447b7a3323e572b676}.
Some platforms do not support temp variables to be used as inout parameter.

Detected on Mac with Intel iGPU.
2022-05-10 08:30:21 +02:00
Chris Blackbourn
bc256a4507 Fix T50398: Constrain to Image Bounds failed with 2D cursor pivot
Use more robust logic for "Constrain to Image Bounds" when scaling UVs.

Reviewed By: campbellbarton

Ref D14882
2022-05-10 14:42:08 +10:00
Joseph Eagar
501ec81d3e Merge branch 'blender-v3.2-release' 2022-05-09 19:52:27 -07:00
Ramil Roosileht
4bb90b8f4c D14887: Fix artifacts in hue filter
The hue color filter now wraps correctly.  Fixes T97768.

Reviewed By: Julien Kaspar & Joseph Eagar
Differential Revision: https://developer.blender.org/D14887
Ref D14887
2022-05-09 19:46:22 -07:00
Campbell Barton
ccb4e29873 Merge branch 'blender-v3.2-release' 2022-05-10 11:16:27 +10:00
Campbell Barton
e7464dffbc Merge branch 'blender-v3.2-release' 2022-05-10 11:16:23 +10:00
Chris Blackbourn
1c1e842879 Fix T86358: Use per face aspect correction for primitive UV projections
During UV unwrapping, Cube Projection, Sphere Projection, Cylinder
Projection and Project From View (in the 3D Viewport), when "Correct
Aspect" toggle is active, it now uses a query cache to perform a
per-face aspect ratio ("per_face_aspect") correction for the active
image of each face.

Reviewed By: campbellbarton

Ref D14852
2022-05-10 11:14:59 +10:00
Clément Foucault
a4c2060b91 Fix T97545 GPU: Crash caused by uncommented quote char in source string
Some drivers completely forbid quote characters even in unused
preprocessor directives.

This patch adds a debug build check for all `.glsl` files that need to
be manually handled. For shared headers with `#include` directives, we
need to do runtime patching of the source to remove the quote.

Also fix an instance of the quotes check failing in `eevee_next`.
2022-05-10 00:47:44 +02:00
Hans Goudey
b468255453 Cleanup: Return early 2022-05-09 23:59:28 +02:00
Clément Foucault
b6b94f878f Merge branch 'blender-v3.2-release' 2022-05-09 23:52:44 +02:00
Clément Foucault
7301547ca7 EEVEE: Fix missing CLOSURE_DEFAULT 2022-05-09 23:52:31 +02:00
Clément Foucault
35594f4b92 Fix T97985 EEVEE: Shader mixing not working correctly when reusing shader nodes
This was caused by the `Closure` members being added to the final contribution
more than once. The workaround is to clear the members once a closure has
been added to the final contribution. I used `inout` on `Closure` inputs
so that the render engine implementation of mix and add closure nodes
can do its own thing. The nodegraph handling of inout was changed for this
to work.
2022-05-09 23:52:31 +02:00
Clément Foucault
6e2b0a38f0 Fix T97984: GPUCodegen: crash when loading demo file
This was caused by the name buffer not being ensured in all cases.

Change the behavior and always create the `NameBuffer`.
2022-05-09 20:06:27 +02:00
Clément Foucault
bfa1c077cb Fix T97983 EEVEE: Tangent Normal of Curves info behaves differently in Eevee
Curve tangent was correctly mistaken with curve normal.

This patch fixes the name of the output in the glsl function and make curve
attributes more explicit (with `curve_` prefix).

This also improve the normal computation by making it per pixel to match
cycles.

Also ports the changes to eevee-next.
2022-05-09 20:06:27 +02:00
Jacques Lucke
bda9a1b103 Cleanup: simplify filling curve batch cache buffers
Write to arrays directly instead of using the "step" utility.
2022-05-09 18:37:39 +02:00
Jacques Lucke
c2e26406c5 Cleanup: use different hardcoded shape to make the root/tip radius useful
Those settings are intended to be removed at some point, but for now they
are still needed because the radius attribute isn't supported.
2022-05-09 18:37:39 +02:00
Brecht Van Lommel
78f61bf8c1 Fix T97906: OpenEXR files with lower case xyz channel names not read correctly
Adds some utility functions to avoid using toupper() which depends on the
locale and should not be used for this type of parsing.
2022-05-09 18:28:24 +02:00
Hans Goudey
c2737913db BLI: Avoid invoking tbb for small parallel_reduce calls
Apply a change similar to e130903060 for
`parallel_reduce`, just like `parallel_for`. I measured a performance
improvement in viewport FPS of at least 10% with 1 million small
instances (one bottleneck was computing many small bounding boxes).
2022-05-09 18:21:50 +02:00
Hans Goudey
892562b7bf Cleanup: Remove incorrect statement after recent refactor 2022-05-09 18:00:47 +02:00
Hans Goudey
f9d7313bb7 Fix T97853: Crash with edit mode X-ray and subdivision
The mesh drawing code used a different mesh to check whether or not to
draw face dots and to actually retrieve them. The fix is moving the
responsibility of determining whether to use subsurf face dots to the
creation of `MeshRenderData` where the mesh used for drawing is
known, rather than doing it at a higher level.

Differential Revision: https://developer.blender.org/D14855
2022-05-09 17:39:22 +02:00
Hans Goudey
686abf1850 Fix T97853: Crash with edit mode X-ray and subdivision
The mesh drawing code used a different mesh to check whether or not to
draw face dots and to actually retrieve them. The fix is moving the
responsibility of determining whether to use subsurf face dots to the
creation of `MeshRenderData` where the mesh used for drawing is
known, rather than doing it at a higher level.

Differential Revision: https://developer.blender.org/D14855
2022-05-09 17:36:54 +02:00
Hans Goudey
e0e95f7895 Refactor: Move resample curves code to the geometry module
This commit moves the code for the resample curves node to the geometry
module, to allow reusing it in any editor. Split from D14870.
2022-05-09 17:33:41 +02:00
Jacques Lucke
9f8f35008c Move particle system modifier to C++
The modifier is supposed to create a Curves data block soon, which
helps with the transition to the new Curves object in drawing code.
Utilities for the new Curves object are mostly in C++.
2022-05-09 16:59:48 +02:00
Bastien Montagne
5823e749dc Merge branch 'blender-v3.2-release' 2022-05-09 16:35:25 +02:00
Bastien Montagne
43e31d26a9 Fix T97927: bpy.utils.units.to_string uses wrong units for velocity, acceleration, lens length, and power
`TEMPERATURE` type was also missing, not only the new-ish
`TIME_ABSOLUTE` one...

Added a static assert on the size of the `bpyunits_ucategories_items`
array, and a comment on anonymous enum of `B_UNIT_`, in the hope this
won't happen again in the future.
2022-05-09 16:34:11 +02:00