Blender crashes when duplicating a node editor with an active
compositor session. That's because the runtime data of the editor is
nullptr upon duplication. This is a regression in 51a7961e09, where the
runtime data was set to nullptr upon duplication, while it should be
assigned a newly allocated structure or duplicate the existing
structure. To fix this, we do the former and allocate a new structure
because that's what the developer intended in the original patch.
The crash is rare and went unnoticed because the runtime data is
initialized in the init method as well, which typically gets called
quickly right after the area is duplicated.
Pull Request: https://projects.blender.org/blender/blender/pulls/122506
This ports the `lock_material` layer property to GPv3.
For this, the `layer_index` is also required in `retrieve_editable_points`
and `retrieve_editable_strokes` to choose strokes based on
the `lock_material` property.
In `retrieve_editable_elements` we now pass the `MutableDrawingInfo`
to get both the `drawing` and `layer_index`.
Pull Request: https://projects.blender.org/blender/blender/pulls/119913
How to reproduce it:
* Launch Blender
* Make sure there are updates available
* Disable "Allow Online Access"
The offline icon would not show on the status bar.
* Show offline icon when offline.
* Don't show the vertical split when there are no updates (since we
don't draw any information in this case.
Reviewed by Campbell Barton.
Ref !122548
Move extension update display from the splash screen to the status bar.
Based on !122413 with minor changes & removal of splash text.
Co-authored-by: Harley Acheson <harley.acheson@gmail.com>
Lack of initialization of `vertex_color_` will cause garbled color to
show up in later interpolated points while drawing in material mode with
curves already have `vertex_color` attribute. Now fixed.
Pull Request: https://projects.blender.org/blender/blender/pulls/122528
Replace use of "bl_pkg" operator category with "extensions",
this naming was used while the functionality was experimental,
not intended to be used once extensions was moved out of experimental.
It doesn't hurt, but it doesn't really provide any benefit either
to how we use the value in the code at the moment, so I view it as
kind of misleading, since all the calls here are done at runtime.
Pull Request: https://projects.blender.org/blender/blender/pulls/122419
This commit adds logic to convert between USD dome lights and Blender
world materials.
The USD dome light rotation is represented in a mapping node input to the
environment texture. If the dome light has a color specified in addition to
the texture map, the color will be converted to a vector multiply on the
the environment texture output.
I the imported USD has multiple dome lights, only the first dome light will
be converted to a world material.
Co-authored-by: kiki <charles@skeletalstudios.com>
Co-authored-by: Michael Kowalski <makowalski@nvidia.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/121800
blah
Add a new operator 'Frame Scene Range' to the Dope Sheet, Graph Editor,
NLA, and VSE 'view' menus. It is added both to the regular menu and the
pie menu (by default on the ` hotkey).
The operator will only change the horizontal view, to show the scene
range or the preview range, depending on whether the preview range is
active or not.
The label of the operator switches between "Frame Scene Range" and
"Frame Preview Range" to indicate what will happen.
For the VSE this operator is quite similar to the 'Frame All', as that
by default also frames the scene range. There are a few notable
differences though:
- Frame All includes any strip that extends beyond the scene end frame.
- Frame All ignores the preview range.
Pull Request: https://projects.blender.org/blender/blender/pulls/122311
Introduces a `uiTextEditing` struct to hold most data for handling text editing,
with improved naming. This should help untangling this code a bit, reduce
perceived complexity, and make the relation between data and the button state
more clear.
Generally I'd like to try to minimize use of `uiHandleButtonData`, to reduce
complexity while increasing flexibility. For example it would be good if text
editing code could be independent of the active button, so a text button can
receive input while other UI elements remain interactive (e.g. for search
popups, which have their own ad-hoc layout, event handling and drawing code).
This is a rather conservative initial refactor, I might follow up with further
(more risky) changes in separate PRs. But this seems like enough of an
improvement to get in first.
Pull Request: https://projects.blender.org/blender/blender/pulls/122332
This implements the angle and angle factor draw tool settings in the `Advanced` panel.
The behavior is changed slightly to GPv2. Instead of calculating the radius of the point
based on an interpolated value between the adjusted radius and the previous point,
in GPv3 the radius is adjusted by a "smoothed angle factor". This factor is the angle factor
based on the previous point, but smoothed over time (by a constant amount).
Pull Request: https://projects.blender.org/blender/blender/pulls/122488
The fill tool generated strokes for exterior as well as interior
boundaries. This is undesirable because fill strokes can't actually have
holes and the overlapping strokes are not very useful.
This reconstructs GPv2 behavior where only the outer-most starting
points for boundaries are used, ignoring interior boundaries.
Pull Request: https://projects.blender.org/blender/blender/pulls/122498
This patch makes it such that the GPU context required for the
compositor is only created when the GPU compositor is in use. This
should fix#121761 for the CPU compositor, but generally also make the
CPU compositor more robust to such errors in the future, and a tiny bit
faster since context creation is skipped.
Pull Request: https://projects.blender.org/blender/blender/pulls/122420
User feedback has been that the pinned modifier looks broken because
there is no feedback in the UI showing that it's pinned (related to the
recently reported #121620). It's also inconvenient to disable the pinning
if it's required to move the modifier up (before another modifier that
controls normals for example). Now the "Pin" icon is displayed here,
and clicking on it turns off the pinning.
Also, change the property name from "Stick to Last" to "Pin to Last".
"Stick" is a weird word in the UI, it sounds uncommon and strangely
physical. "Pin" is more associated with this concept.
---

Pull Request: https://projects.blender.org/blender/blender/pulls/122444
Remove the button "Update Views" that requires the user to update visible views manually. This is now consistent with the automatic update of compositor tree, when views are added or deleted, see #120685.
The patch also addresses #109866 (not really a fix since behavior in that bug report is intentional).
Pull Request: https://projects.blender.org/blender/blender/pulls/122290
Previously, the code only checked that ctrl is pressed. This works, but
also allows other keys to be hold at the same time which might conflict
with other shortcuts. Now the code also makes sure that shift and alt
are not pressed.
This adds support for renaming some sockets in the node UI directly by Ctrl+Clicking
on them. This is sometimes more convenient than going to the sidebar. It affects the
Menu Switch and Bake node as well as the Simulation and Repeat zone.
Some related notes:
* The Group Input and Group Output node are not yet supported, because it currently
breaks the right-alignment on the Group Input node. I couldn't find a workaround for
this yet.
* Double-clicking on the socket name does not trigger renaming yet. This seems to
be a deeper issue in the interface code.
* The highlighting when hovering over sockets that can be renamed is very dim
making it hard to see. Alternatives like drawing a box around the label when hovering
it (like in list views) have been discussed but seem to be much more difficult to get to work.
Despite these limitations, it seems reasonable to add this already, as it shouldn't affect
anyone negatively. The nodes still look like before.
Co-authored-by: Hans Goudey <hans@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/121945
The cloth scale Filter relies on properly set up deformation constraints
(this is done in `do_cloth_brush_build_constraints_task`).
Whenever the Brush (not the Filter) is set to `SCULPT_TOOL_CLOTH`
(having it selected prior to the filter), another code path is taken and
the setting up the proper constraints is skipped (making the Filter
disfunctional).
To distinguish between filter usage and brush usage, there were already
checks for the `StrokeCache` (indicating brush usage afaict), so to
resolve, use the same check to prevent entering the particular code path
associated with the `SCULPT_TOOL_CLOTH`.
Probably an oversight in c2f0522760
Pull Request: https://projects.blender.org/blender/blender/pulls/122440
Show white text and black outline when dark, black text and white
outline when light. Slight darkening of TH_TIME_GP_KEYFRAME and
the red used for slow FPS to better work with varying backgrounds.
Pull Request: https://projects.blender.org/blender/blender/pulls/122449
This improves working with viewer nodes in geometry and compositor nodes.
Previously, the viewer node would typically stay at the position where it was first
inserted which leads to very long links in many cases. Now the viewer node
automatically moves to the place where the user ctrl+shift+clicked to view data.
The viewer is placed slightly to the right and top of the current node. It is moved
up a bit, so that it does not get in the way as quickly when the user wants to add
another new node. Furthermore, the viewer node position is chosen so that it
does not intersect with other nodes.
In the future we could implement animating the node position so that it slowly
transitions to it's new places.
Pull Request: https://projects.blender.org/blender/blender/pulls/121951
The GPv2 draw tool used a setting called "Input Samples" to
generate points (subdivisions) when two samples are far apart
from one another.
In GPv3 we have the same feature, but with a bit more control.
Users can now specifiy the maximum distance between two
points based on a percentage of the brush size (in pixels).
There were some issues in this function.
* Undefined behavior for the fallback when getting the `layer_src`
* Searching for the layer `grease_pencil_dst` based on the value of a pointer, instead of the `name`.
Pull Request: https://projects.blender.org/blender/blender/pulls/122426
Move the loop over all affected nodes to each brush implementation,
making use of lambdas to avoid a bunch of boilerplate code. This makes
it clearer what logic actually depends on the vertices in each node, and
decreases future overhead if we decide to make PBVH nodes smaller.
Access the vertex to face map directly from the mesh as necessary.
This helps to prevent unnecessary calculation (it isn't necessary in
weight paint mode besides the blur brush anymore), though it is
used for vertex normals calculation for smooth-shaded meshes.
`ss.vert_positions` and `pbvh.vert_positions` are expected to point to the
same evaluated deformed position array here. It's preferrable to use the
span we already have locally. Though eventually we hope to remove the
vertex position array from PBVH.
Reading the selection is much cheaper than calculating the brush radius
since it just requires reading from a boolean array. Better to do it earlier
so the radius calculation can be skipped for deselected points.