A subtle error in 66da875488fc4f9e69b1 mean that the existing selection
was overwritten instead of adding to the final flag on the result BMesh
element. Selection is often interpolated separately which is probably
why this mistake wasn't more observable earlier.
A subtle mistake in 66da875488fc4f9e69b1 meant that existing selection
was overwritten instead of maintained in the BMesh utility functions for
copying element custom data and flags.
This enables scenes with all textures not fitting in GPU
memory to finally render. For scenes that are fitting,
no functional change or performance change is expected.
Pull Request: https://projects.blender.org/blender/blender/pulls/122385
There is a fundamental issue when adding nodes from versioning code right now.
Generally speaking, versioning code should not change after it has been written.
If old versioning code suddenly changes its behavior, it can invalidate the versioning
code that comes after it.
The issue is that while the versioning code itself doesn't change, it is indirectly calling
code that is changing and evolving all the time. This makes the versioning unreliable
and makes it hard to do certain changes (e.g. changing which sockets a node has).
It's easy to overlook issues this creates because many of these cases don't have
regression tests.
The solution is to keep the versioning code more independent from the part of
Blender that is constantly evolving. More specifically, this means that when adding
a node, this should not take the current node initialization and declaration code into
account. Instead, the versioning code should just manually create the node with
the sockets that it expects based on the version that the versioning code has been
written for.
This patch adds new `version_node_add_empty`, `version_node_add_socket` and
`version_node_add_link` methods which allow creating nodes without calling ever
evolving code.
Pull Request: https://projects.blender.org/blender/blender/pulls/121664
```
- Sync repo: {remote_url}
+ Checking repository "{remote_name}" for updates...
- Sync downloading remote data
+ Refreshing extensions list for "{remote_name}"...
- sync: invalid manifest ({error_msg}) reading {remote_url}!"
+ Repository error: invalid manifest ({error_msg}) for repository "{remote_name}"!
- Sync complete: {:s}".format(remote_url)
+ Extensions list for "{remote_name}" updated
```
---
Note, this is working as expected (from Blender anyways), however I can't test test_cli.py at the moment here.
---
Old messages:
<img src="https://projects.blender.org/attachments/9d4db8f5-ef9a-48c8-9e56-cb534aa9aed5" width=650>
New messages:
<img src="https://projects.blender.org/attachments/0245bcb7-6c4e-47e4-a616-0cf831761b47" width=450>
---
Co-authored by Pablo Vazquez
Pull Request: https://projects.blender.org/blender/blender/pulls/122378
This PR adds the *Polyline Mask*, *Polyline Face Set*, and
*Polyline Trim* tools.
## Limitations
* *Polyline Face Set* is not added to either of the *Sculpt*
or *Face Sets* menu as none of the other face set gestures are in
either.
Pull Request: https://projects.blender.org/blender/blender/pulls/122248
The same tooltip is used for Update. Which didn't make much sense as it
was (since it was suggesting that it was enabling the extension).
Simplifying the message now.
Fixup for: 31f7016ba9f92135fe1843aa72892a56607bd061
Co-authored by Pablo Vazquez.
Part of #116901.
Avoid the "extractor" abstraction for creation of edit mode overlay data
vertex buffers. Use threading::parallel_for loops instead. Also prefer
code duplication over linking things that are unrelated. This is the
last "extractor" loop that runs by default in edit mode so there is a
small performance improvement there. Besides that, the changes is the
same as the other similar refactors.
Pull Request: https://projects.blender.org/blender/blender/pulls/122386
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
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
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
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 93d5e106aac8).
Pull Request: https://projects.blender.org/blender/blender/pulls/119789
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
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
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
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
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
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>
- 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>
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
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.
This was introduced by 944be3d619e07b6f28b6e355aa1f9ab4241da9a1.
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
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
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
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
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