This test can't easily be updated because it relies on the old socket shape
design before #144119. Parts of it could be done from scratch again, but
most of this stuff is also tested by the new structure type inferencing test
in `bl_node_structure_type_inference.py`.
Pull Request: https://projects.blender.org/blender/blender/pulls/144185
Mixing dynamic data with other data always results in dynamic now. While this
wasn't true without lists, it is true now and also makes sense generally. Also
mixing lists and single values or fields results in a list now.
Pull Request: https://projects.blender.org/blender/blender/pulls/144183
Node buttons declared with `NodeDeclarationBuilder::add_default_layout`
are not visible in the `uiTemplateNodeView` used for shader nodes among
others. This happens in the Glass BSDF shader node.
The `ui_node_draw_node` was not handling node layout items in case the
node is using a custom socket order.
This was originally fixed in #143781 which was closed accidentally.
Pull Request: https://projects.blender.org/blender/blender/pulls/144159
This removes the `STRIP_DUPE_UNIQUE_NAME` and `STRIP_DUPE_ALL` macros
and replaces them with an `enum StripDuplicate`.
A flag with a value of 0 was implicitly used as "duplicate selected strips" so the
enum uses `Selected = 0` to document this behavior better.
Pull Request: https://projects.blender.org/blender/blender/pulls/144125
Vulkan 1.0 render passes have been replaced by dynamic rendering in 1.2.
Blender Vulkan backend was implemented with dynamic rendering in mind.
All our supported platforms support dynamic rendering. Render pass support
was added to try to work around an issue with legacy drivers. However these
drivers also fail with render passes.
Using render passes had several limitations (blending and some workbench
features were not supported). As no GPU uses it and it is quite some code
to support it is better to remove it.
Pull Request: https://projects.blender.org/blender/blender/pulls/144149
This was disabled because island selection used to be exposed as a
UV selection mode (along with vertex/edge/face) where selecting
parts of other islands would seem like a bug.
Now island selection has been moved to a separate toggle it makes
sense to allow connected geometry to be included in the selection when
other selection options enforce this.
Support limiting the merge by connected geometry.
This is useful for operations such as bevel where it's not desirable
for the merge to connect isolated surfaces.
Accessible from the Python API, no user visible changes.
Ref !144036
Failure to do this can cause the the property default to be incorrect
and some sanity checks fail to run.
Fail when an error if this isn't set.
Ref !144133
Follow up to f646948ace
The repeat zone color is changed back to the color it used in 4.5, to
avoid the need for people to re-learn the color. The closure socket and
zone share the same color, which is made more yellow-ish to distinguish
it from the bundle socket color.
The spec for .usdz permits only a small handful of file formats to be
contained in the archive, and HDR is not among those supported[1]. This
also causes validation errors with the `usdchecker` tool (will be
properly tested in a follow up change).
Ignoring the potential for a user to export a .usdz file with materials
referencing unsupported file formats, Blender itself should use only
the supported formats for its business.
[1] https://openusd.org/release/spec_usdz.html#usdz-specification
Pull Request: https://projects.blender.org/blender/blender/pulls/144101
`VolumeProbeModule::do_full_update_` can be true while
`irradiance_pool_size_` being already correct and `irradiance_atlas_tx_`
being valid, so `brick_pool_` ends up being "allocated" with
`atlas_col/row_count` being 0.
This can happen if `VolumeProbeModule::init` is called, but the
`VolumeProbeModule::set_view` call is skipped (due to ongoing shader
compilation), so the `do_full_update_` flag is not cleared before the
next `init`.
Pull Request: https://projects.blender.org/blender/blender/pulls/144154
The issue in #142046 is caused by the deferred lighting pass not
running.
Despite plenty of testing and debugging we have not been able to spot
any errors in the Blender code.
Checking the link status of specialization shader variants seems to fix
the issue, which may suggest a bug on the driver side.
Pull Request: https://projects.blender.org/blender/blender/pulls/144150
This is fundamentally quadratic code until #140907 is implemented. However, the
old approach that didn't use `StringRef` was a few percent faster because it
didn't have to call `strlen` as often. So this brings back a little bit of
performance in cases like #140706.
Pull Request: https://projects.blender.org/blender/blender/pulls/144012
This PR adds a flag to the pose bone that determines its visibility.
Doing so allows to hide a pose bone and
* don't affect other instances of the same armature
* save the visibility even if the rig is linked
The visibility of the bone in object mode is now also determined by the
pose bone whereas before it was the `Bone`.
**This breaks backwards compatibility** on the Python API since the visibility property,
on the `Bone` behaves differently now as it hides the edit bone instead of the pose bone.
In order to remove all active uses of `BONE_HIDDEN_P` the changes in `armature_skinning.cc` are required.
Part of #138482
Pull Request: https://projects.blender.org/blender/blender/pulls/139167
Previously line art uses the same thickness value as found in grease
pencil before blender v4.3 for generating strokes, now everything is
migrated to using "radius", so it makes more sense to change that it to
using "radius" so it's consistent with everywhere else.
Pull Request: https://projects.blender.org/blender/blender/pulls/144121
This patch redesigns the File Output node to provide better UX and UI.
This is mainly achieved by allowing the user to create inputs by
dragging into an Extend socket and adjust existing inputs using the
familiar UI list design available in Blender. Additionally, various UI
changes were done:
- The Use Node Format option was renamed to Override Node Format for
clarity.
- Socket types are now fixed and do not change as new links are made,
allowing users to specify the exact output type and employ implicit
conversion if needed.
- The distinction between images and Multi-Layer EXR was made clearer.
- Final output paths are drawn in the UI to remove guess work.
- The Base Path was split into a Directory and a File Name.
- Panels were added to group options, include a panel for the node
format, items, and item formats.
Pull Request: https://projects.blender.org/blender/blender/pulls/141091
This PR changes the collapsed node socket shape to remove the "pill"
shape, so that the input and output sockets are stacked vertically
instead of around semi-circles.
The main motivation is to improve the look with single value sockets,
where the combination of their vertical shape and the rounded pill shape
of the node looked quite bad.
Regardless of that though, I'd argue this makes the smaller collapsed
nodes look much nicer: more consistent with other nodes and even a bit
smaller. For larger collapsed nodes, at least it gets rid of the
"gigantic circle" shape.
There is still some overlap with stacked single-value sockets. That's
a compromise to keep the node small (half the distance between sockets
as regular nodes), but it could be tweaked.
Pull Request: https://projects.blender.org/blender/blender/pulls/144028
Invoke context menu for shape key with right click.
Added `MESH_MT_shape_key_tree_context_menu`, this include operators
that takes action on selected/active tree items:
- Make Basis
- Duplicate
- Move to Top -> Move After Basis
- Move to Bottom -> Move to Last
See Video in PR description
Pull Request: https://projects.blender.org/blender/blender/pulls/143444
VSE cache processing was handling thumbnail generation requests in
parallel, however often that was resulting in CPU core over-subscription
that negatively affects user interface smoothness. Process requests
serially; some parts of image/video loading are internally multi-threaded
already. This makes thumbnails load somewhat slower, but while that
is happening the rest of blender feels much smoother, and the CPU
fans don't spin up as much.
Additionally, make the video thumbnail loading code use smallest
available proxy file, if present. This was overlooked in the original
new thumb cache implementation (!126405).
SpriteFright timeline edit v135 (mostly JPG images, some movies),
loading thumbnails for the whole timeline on Ryzen 5950X (Windows):
- 4.2.1: 35 seconds, CPU usage ~35%, UI smooth
- Main: 13 seconds, CPU usage ~90%, UI choppy
- This PR: 19 seconds, CPU usage ~35%, UI smooth
Manually made timeline with 10 video files:
- 4.2.1: 12 seconds, CPU usage ~50%, UI smooth
- Main: 6 seconds, CPU usage ~100%, UI choppy
- This PR: 9 seconds (no proxies) / 4 seconds (with proxies), CPU usage
~50%, UI smooth
Candidate for 4.5.x backport
Pull Request: https://projects.blender.org/blender/blender/pulls/144120
This patch improves warnings displayed when the user attempts to use
passes in render engines other than EEVEE with the viewport compositor.
Previously, an error icon was always displayed if the viewport
compositor was in use as well as a viewport overlay text. This error
existed even when the render engine was set to EEVEE and even if the
passes are not actually used, which was always confusing for users.
This patch improves this by only displaying the error when a pass is
actually used and when a non-EEVEE render engine is used.
This is implemented internally as an extra info callback for the node.
And the compositor_unsupported_message member hack was removed.
Pull Request: https://projects.blender.org/blender/blender/pulls/144005
Replaces the `FPS` macro with `scene->frames_per_second()`.
The macro has two major issues:
* It hides that it depends on a `Scene *` variable named `scene`.
* It makes debugging harder.
This is now replaced with a member function on the scene.
Pull Request: https://projects.blender.org/blender/blender/pulls/144127
The Keying node asserts if its input is single value or not connected.
This is due to a typo when getting the input, where the output was used
instead.
Edge and Vertex marks such as Crease, Bevel Weight, Seam, Sharp, have
specific use cases and colors assigned to them that users get familiar
with over time.
It can be hard to remember which color belong to what, this PR tries to
address this by introducing colored icons that follow the theme setting
for that edge mark/flag.
See PR for details and screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/144075
The morphology operations in the Keying node in the compositor can no
longer do erosion by using negative Feather and Dilate inputs. Clamping
to positive values was accidentally done when porting options to inputs,
so this patch fixes this by removing the clamping.
The `ANIM_OT_keyframe_clear_v3d` had a few issues
The reason for the action disappearing was the call to `animdata_remove_empty_action`.
This checked the curves on the action directly, thus failed with the layered actions.
However with the change to the layered action, the convention is that actions are not
unassigned when it is empty. This is why I also added a check for legacy actions before the call.
I am doing this even though legacy actions will be removed in 5.0 because this
needs to be backported.
The third issue was that `changed` was never set to true with layered actions,
which meant the notifier was never sent to update the UI.
Pull Request: https://projects.blender.org/blender/blender/pulls/144001
On some drivers, the GLSL compiler doesn't reflect the omitted
`local_size_*` of a compute shader inside `gl_WorkGroupSize`.
This lead to the 2D size computation of 1D workgroups to become
0 which was bypassing the parallel reduction algorithms.
Ensuring `local_size_*` are always set fixes the issue.
For clarity, also fix the 1D shaders to not use `gl_WorkGroupSize.y`.
This also fix a copy paste error in the Metal backend.
This issue affected AMD drivers on Windows.
Rel #142046
Candidate for backporting to 4.5 LTS.
Pull Request: https://projects.blender.org/blender/blender/pulls/144056
Enum-flag properties uses non-flag logic to set their default,
often setting the value to the first item in the array passed
to RNA_def_property_enum_items.
The incorrect default was shown in the Python API docs.
Resolve by using the enum values as a mask.
RNA_def_property_enum_items checks for PROP_ENUM_FLAG which
doesn't work if the flag is set afterwards.
This can be enforced - although that can be handled separately.
Needed to fix#143980.