Commit Graph

136602 Commits

Author SHA1 Message Date
Hans Goudey
ebbb72187a Cleanup: Use references, const, for mesh edit data flag extraction 2024-05-28 11:26:21 -04:00
Lukas Tönne
fd651da7e5 GPv3: Fix fill tool boundary construction on thin pixel lines
Finding the boundary uses a Moore neighborhood. The algorithm iterates
over filled pixels, following pixels with empty neighbors, in clockwise
direction. For a given pixel and input direction (where the boundary is
coming from), the next neighbor is found by checking neighbors clockwise
from the previous pixel.

The last direction in this inner loop would be opposite the input
direction, i.e. if the pixel has only one neighbor it can loop back
and iterate over pixels that are already in the boundary, from the
opposite direction. However, this last direction was excluded from the
search (an earlier implementation did not support it). Using this search
direction as well allows the boundary to go back and forth over the same
line of pixels until the boundary is closed.

Pull Request: https://projects.blender.org/blender/blender/pulls/122383
2024-05-28 17:25:35 +02:00
Sean Kim
7726e7f563 Sculpt: Add Line Face Set Tool
This PR adds the `Line Face Set` tool and adds it to the following
location:
* Sculpt Mode toolbar

## Limitations
None of the existing Face Set gesture operators exist in either the
Sculpt dropdown or the Face Set dropdown, this PR does not add the Line
Face set tool in either location as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/122245
2024-05-28 17:17:10 +02:00
Lukas Tönne
f3054f03cd GPv3: Dilate and erode functions for the fill tool
This increases or decreases the initial filled area by an amount of
pixels.

Pull Request: https://projects.blender.org/blender/blender/pulls/122368
2024-05-28 17:14:28 +02:00
Clément Foucault
71e8e6520e EEVEE-Next: Fast GI: Improve Precision parameter
The parameter was not taking the number of samples into
account, making it impossible to acheive highest quality
at high sample count.
2024-05-28 17:14:06 +02:00
Sean Kim
1ab3fffc1d Sculpt: Add increase / decrease visibility operator
This PR adds a new operator: `PAINT_OT_visibility_edit` to support
iteratively expanding or shrinking the visibility of a mesh, similar to
the *Grow / Shrink Mask* actions and the *Grow / Shrink Face Set*
options. This operator is exposed via two new entries in the *Sculpt*
toolbar entry as *Show More* and *Show Less* and have also been
assigned to Page Up and Page Down in the default Blender keybinds for
Sculpt Mode.

### Technical Details
Each of the PBVH types is solved slightly differently, though the
general principle for each is as follows:

1. Make a copy of the current mesh visibility state
2. Iterate over elements (faces & corners if available, otherwise
   vertices) to look at adjacency information
3. Apply appropriate visibility change to vertices
4. Sync face visibility

### Limitations
* Currently, like all other operators in the `paint_hide.cc` file. This
  new operator is limited to Sculpt mode only.

Based off of [this](https://blender.community/c/rightclickselect/pz4y/)
RCS request.

Pull Request: https://projects.blender.org/blender/blender/pulls/120282
2024-05-28 17:12:45 +02:00
Philipp Oeser
fcc481a407 Render: include info string for "render_stats" handler
The "render_stats" handler now includes the message line that was
written to stdout as the first arg (using `BKE_callback_exec_string`
instead of just `BKE_callback_exec_null`).

This can be useful to track render progress (and people were relying on
parsing stdout in the past).

Was a request in chat.

This also corrects possible output from the callback being written in
between message parts in `do_write_image_or_movie` (which was probably a
mistake in 93d5e106aa).

Pull Request: https://projects.blender.org/blender/blender/pulls/119789
2024-05-28 17:07:27 +02:00
Hans Goudey
89c13dbb5c Fix: Mesh draw extraction missing wire batch missing normals input
The `overlay_wireframe` shaders uses a `nor` input but it wasn't added
to the GPU batch since the normals were split to a separate vertex buffer.
Adding that input gets closer to the appearance in 4.0. But it still looks a
bit different-- the outline is not as bright overall.

Fixes #120781.

Pull Request: https://projects.blender.org/blender/blender/pulls/120827
2024-05-28 16:58:08 +02:00
Nika Kutsniashvili
61178b22a2 Nodes: port "Connect to Output" operator from Node Wrangler
As Node Wrangler add-on is moving to extensions platform and maybe isn't shipped
with Blender from 4.2 onwards, some of it's more important functionalities which are
crucial for Blender UX can be ported inside core. Also see #121749.

This PR ports "Preview Node" operator from add-on inside `scripts/startup/bl_operators`.

When Shift-Ctrl (or Shift-Alt) clicked on the node operator connects output socket of the
node to active Output node in the tree (group, material, light, or world output). For Geometry
Nodes this is just handy operator, but in Shader Nodes, because Viewer Node isn't
implemented, this has always been the only way to quickly preview nodes by connecting
it to Material Output.

Changes made from Node Wrangler version:
- Renamed operator from "Preview Node" to "**Connect to Output**", because node previews
  already mean a different thing in context of compositor and shader editor, and viewer node
  is used for previewing in geometry nodes. Connect to Output is correct name because in every
  context it's called that's what it does.
- Assigned shortcut Shift-Alt-Click in shader editor as well. Even though Shift-Ctrl click already
  works, it's good to have consistency with geometry nodes, so that users can use same shortcut
  in both contexts.

Operator doesn't work in compositor. It's not clear if that's wanted (to connect to Composite node),
and if it is it'll be added in separate PR.

Original authors of the add-on: Bartek Skorupa, Greg Zaal, Sebastian Koenig, Christian Brinkmann, Florian Meyer

Pull Request: https://projects.blender.org/blender/blender/pulls/122016
2024-05-28 16:42:55 +02:00
Campbell Barton
be4788a9bd Extensions: pass platform to the remote URL
Add the platform to the URL when connecting to the remote server.

Based on !122234.

Co-authored-by: Dalai Felinto <dalai@blender.org>

----

This follows documented platform ID's from: https://docs.blender.org/manual/nb/dev/advanced/extensions/getting_started.html

Co-authored-by: Dalai Felinto <dalai@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/122371
2024-05-28 16:35:41 +02:00
Jacques Lucke
905aaf439c Geometry Nodes: new Set Instance Transform node
This node allows replacing the transformation of every instance by providing a matrix.

Before, this was only possible by using the Store Named Attribute node. It's more common
in Blender to have specialized built-in nodes for built-in attributes (e.g. Set Position, and Set ID).

Pull Request: https://projects.blender.org/blender/blender/pulls/121473
2024-05-28 16:34:37 +02:00
Clément Foucault
6e50aebd74 EEVEE-Next: UI: Remove mention of Horizon Scan in tooltip
We use fast GI for this feature now.
2024-05-28 16:16:53 +02:00
Clément Foucault
c9c95e7e64 EEVEE-Next: RNA: Rename horizon property to fast_gi
This avoid discrepancy between the UI and the API.
2024-05-28 16:09:00 +02:00
Clément Foucault
117bfc870d EEVEE-Next: Fast GI: Add angular thickness
While easier to understand, the conventionnal global
scene thickness parameter have some downside:
- It doesn't scale with larger scenes since the
  distant samples have small thickness
- It doesn't handle fine geometric variation in
  foreground.

The proposed angular thicknes makes all sample
have the same angular span. This makes it
distance independant and capture different occluder
thickness with less artifacts. The downside is
that the occluders have the same angular span
at any distance which makes the same occluder inflate
with distance.

A downside is that the geometry near the shading point is
under-represented. Leaving light leaking or lack of AO
at contact points. To fix this, we introduce back a
geometric thickness parameter.

Pull Request: https://projects.blender.org/blender/blender/pulls/122334
2024-05-28 16:00:38 +02:00
Bart van der Braak
ceeaea0c8a Fix: Switch to scheduled trigger for appropriate permission scope in workflow
Previously, the workflow was triggered by **opened pull requests** events.
However, testing revealed that this event, initiated by external GitHub users,
lacks the permission scope to comment on or close pull requests.

To address this, I've updated the workflow to trigger on a schedule. Scheduled
triggers aren't tied to external actors, thereby ensuring the necessary
permission scopes are available.

Pull Request: https://projects.blender.org/blender/blender/pulls/122363
2024-05-28 14:12:20 +02:00
Campbell Barton
b15bc1b5bb Extensions: add the blender version to the remote URL
Add query arguments to the URL when connecting to the remote server.

This information is stripped to create relative paths and for error
messages to prevent overly verbose URS's.

Based on !122234.

Co-authored-by: Dalai Felinto <dalai@blender.org>
2024-05-28 21:41:43 +10:00
Campbell Barton
171319d9ef Extensions: send access token for HTTP requests
- The access token is used when connecting to the server.
- Mention an invalid access token as a possible cause for 403 errors.

Based on !122234.

Co-authored-by: Dalai Felinto <dalai@blender.org>
2024-05-28 21:36:23 +10:00
Campbell Barton
a55c3f503c Cleanup: quiet switch warning 2024-05-28 21:35:27 +10:00
Campbell Barton
a64f36a591 Unbreak building without OPENVDB 2024-05-28 21:35:01 +10:00
Campbell Barton
c33b03fe68 Fix extension tests running after operator poll() changes
Enable "--online-mode" when running tests which require it.
2024-05-28 21:31:25 +10:00
Dalai Felinto
31f7016ba9 Extensions: Tooltip and poll for Install and Update operator(s)
Co-authored by: Pablo Vazquez.
2024-05-28 13:01:07 +02:00
Dalai Felinto
651621da0d Extensions: Tooltips and disable poll message for Check for Updates
This includes checks for offline-mode.

Co-authored by Pablo Vazquez.
2024-05-28 13:01:07 +02:00
Dalai Felinto
bdde38eff1 UI: Preferences: Group the Themes tab with the Extensions
Co-authored by Pablo Vazquez.
2024-05-28 13:01:07 +02:00
Lukas Tönne
0fd81e4994 GPv3: Dot stroke materials for fill tool
This allows using strokes with a "Dot" material as boundaries for the
fill tool.

Note: "Square" materials are not currently supported, they get rendered
as dots too. This is the same in GPv2, there just isn't a simple shader
for rotated squares.

Pull Request: https://projects.blender.org/blender/blender/pulls/122324
2024-05-28 12:53:26 +02:00
Falk David
e7cf4676a1 Fix: GPv3: Build modifier conversion
There were some copy-paste mistakes in the
build modifier conversion.

Pull Request: https://projects.blender.org/blender/blender/pulls/122358
2024-05-28 12:52:38 +02:00
Falk David
d8c5f9a8ba Fix: GPv3: Build modifier maximum gap not working
The "Maximum Gap" setting for the "Natural Drawing Speed"
mode was not working.
This was because the code used `math::max` to try and clamp the value
to a maximum when it should have used `math::min`.
This fixes this issue.
2024-05-28 12:27:36 +02:00
Falk David
e4c0055591 Fix #122355: Opacity modifier hardness mode not working
This was introduced by 944be3d619.

In order to keep the behavior the same at the user level,
we can't invert the factor. We have to invert the values, then
apply the factor and convert back.

Pull Request: https://projects.blender.org/blender/blender/pulls/122360
2024-05-28 12:12:31 +02:00
Lukas Tönne
1080a94a3d Geometry Nodes: Value logging for Volume geometry and Grid sockets
Volumes and grids were not yet handled by the Geometry Nodes value
logging system. This patch adds basic information (number of grids)
to the value logger and node tooltips.

Pull Request: https://projects.blender.org/blender/blender/pulls/121622
2024-05-28 12:05:58 +02:00
Iliya Katueshenock
0507dc8c2a Geometry Nodes: skip unused output of multi-function when evaluating on single values
This is slight optimization. Number of nodes with additional outputs like `Valid`
flag of other math-related things will be more in future, its better to strict api
and do not evaluate even singles. This also can reduce number of logged values.

Pull Request: https://projects.blender.org/blender/blender/pulls/121799
2024-05-28 12:00:14 +02:00
Christoph Lendenfeld
f3af98db5c Fix #120858: Flip Quaternions didn't use keyingset for autokeying
The issue was that the code called a function that doesn't
check for the active keyingset in combination with autokeying.
The fix is to just call `autokeyframe_pose_channel` which does that check.

I snuck in a minor change to the operator label.
It spells out "Quaternions" now instead of shortening to "Quats".
I haven't seen that way to shorten it in Blender before.

Pull Request: https://projects.blender.org/blender/blender/pulls/122170
2024-05-28 11:58:46 +02:00
Jacques Lucke
c10de354ac Curves: add edit mode context menu 2024-05-28 11:38:17 +02:00
Jacques Lucke
afec41e8d3 Curves: add extrude operator to menu 2024-05-28 11:37:22 +02:00
Falk David
489bb2e29a Cleanup: GPv3: Use dereference operator instead of .varray 2024-05-28 11:19:54 +02:00
Christoph Lendenfeld
669b15a53d Fix #119945: Dependency Graph not updated properly when adding constraints through python
The issue was that when adding a constraint through
python to an object that is already animated,
the constraint did not evaluate properly at first.
The fix is to update the depsgraph when creating a
constraint through the API.
Such an update already happened when running the
operator to create a constraint.

Pull Request: https://projects.blender.org/blender/blender/pulls/122198
2024-05-28 11:08:26 +02:00
Bart van der Braak
180764c981 Fix: Replace defunct Probot with GitHub Action workflow to auto-close PRs
The Probot configuration we previously used to auto-close PRs (and Issues) on
GitHub is no longer functioning. To address this, I've created a GitHub Actions
workflow that performs the same task. This workflow is triggered whenever a pull
request is created. With the current setup, pull requests are marked as stale
immediately (0 days) and are subsequently closed right away (0 days).

Pull Request: https://projects.blender.org/blender/blender/pulls/122299
2024-05-28 10:24:14 +02:00
Nathan Vegdahl
b821e56165 Refactor: Anim: put default channel group names in one place
Previously they were split between two places, and were not fully
consistent with each other.  The inconsistency didn't result in
user-facing inconsistency due to what was called when at a higher
level, but this will ensure continued user-facing consistency as we make
more changes to the keyframing code.

Pull Request: https://projects.blender.org/blender/blender/pulls/122317
2024-05-28 09:59:35 +02:00
Campbell Barton
8366ea8798 Extensions: makefile tweaks
- Add a top-level "test" target that runs all other tests.
- Order "watch_*" convenience targets directly after the tests
  they watch.
2024-05-28 16:18:35 +10:00
Omar Emara
0dca908191 Compositor: Add GPU per-node execution time report
This patch adds support for timing GPU compositor executions. This was
previously not possible since there was no mechanism to measure GPU
calls, which is still the case. However, since 2cf8b5c4e1, we now flush
GPU calls immediately for interactive editing, so we can now measure the
GPU evaluation on the host, which is not a very accurate method, but it
is better than having no timing information. Therefore, timing is only
implemented for interactive editing.

This is different from the CPU implementation in that it measures the
total evaluation time, including any preprocessing of the inputs like
implicit type conversion as well as things like previews.

The profiling implementation was moved to the realtime compositor since
the compositor module is optional.

Pull Request: https://projects.blender.org/blender/blender/pulls/122230
2024-05-28 08:13:46 +02:00
Campbell Barton
aea2ac4c78 Fix images-as-planes potentially using linked-library data-blocks
Ensure data-block lookups never return linked-library data.
2024-05-28 16:00:22 +10:00
Campbell Barton
b776d2f5c5 Cleanup: avoid exception handling 2024-05-28 15:58:46 +10:00
Campbell Barton
0cbadd00a3 Cleanup: various non functional changes 2024-05-28 14:09:40 +10:00
Campbell Barton
f7f23541f0 Extensions: add trailing slash to URL 2024-05-28 13:50:26 +10:00
Campbell Barton
ca9b105e6c Cleanup: spelling in comments 2024-05-28 13:47:43 +10:00
Campbell Barton
c110d26c61 Cleanup: use const pointers where possible 2024-05-28 13:47:43 +10:00
Hans Goudey
91c7809640 Fix #122319: GPU subdivision loose geometry positions invalid
Caused by 8d4da6063a
2024-05-27 23:04:07 -04:00
Damien Picard
3865eb5cdb Fix: error when selecting Size Mode in Import Images as Planes
When importing images as planes, on Size Mode update, this error would
be raised in the console because the update tried to assign a value to
a nonexistent member of the class:

Ref: !122343
2024-05-28 12:01:43 +10:00
Hans Goudey
81a6eb2118 Fix #121789: Viewer node crash with matrix socket type 2024-05-27 16:27:41 -04:00
Hans Goudey
0dd61a9dc6 Fix #122293: Hidden edges affect incorrect loose edge indices
The loose edge section of the index buffer was built incorrectly,
essentially assuming that all the hidden edges came at the end of the
loose edge indices. To correct this, we need to track the visibility of
each loose edge index rather than the visibility of each edge itself.
This is driven by the need to combine the loose and non-loose indices
into one IBO with the loose edges in a contiguous section, and the
desire to avoid restart "invisible" indices in the buffer to upload
less data to the GPU.
2024-05-27 16:18:41 -04:00
Julian Eisel
71b0e9d92a UI: Don't refresh searchbox region blocks on text input
Refreshing refers to the recreation of the block and it's buttons in
this case.

Refreshing popup regions on text input was added in 7d80fde033. It can
be useful to update the popup contents on text input, searchboxes have
their completely own update handling however.
2024-05-27 21:25:28 +02:00
Julian Eisel
98c92b9033 Fix more potential crashes when refreshing certain popups
These popups had refreshing enabled, but the callback used for
refreshing would access a likely dangling operator pointer. One case can
use the operator-type pointer instead, in the other case disable
refreshing altogether. Also see 8ea79dc3a7.
2024-05-27 21:21:39 +02:00