In order to copy vertex group weights when subdividing strokes the
groups (`bDeformGroup`) must be created in advance, so that the attribute
wrappers correctly write to `CD_MDEFORMVERT` layer instead of creating simple
`CD_PROP_FLOAT` layers.
In addition the subdivision function must take care to fully write the
destination arrays, since initial values must be considered uninitialized (this
is obfuscated for simple CustomData arrays but breaks with more complex
attributes that use a buffer). In order to ensure fully defined destination
buffers without additional copies, the `finish` call to attribute writers is
postponed until the unselected attribute values have also been copied from input
buffers and all the values are properly defined.
Pull Request: https://projects.blender.org/blender/blender/pulls/132854
Only enable by default dynamic rendering local read on Qualcomm devices. NVIDIA, AMD and Intel
performance is better when disabled (20%). On Qualcomm devices the improvement can be
substantial (16% on shader_balls.blend).
`--debug-gpu-vulkan-local-read` can be used to use dynamic rendering local read on any
supported platform.
Future: Check if bottleneck is during command building. If so we could fine-tune this after the
device command building landed (#T132682).
Pull Request: https://projects.blender.org/blender/blender/pulls/132981
This will add support for `VK_KHR_dynamic_rendering_local_read` when supported.
The extension allows reading from an attachment that has been written to by a
previous command.
Per platform optimizations still need to happen in future changes. Change will
be limited to Qualcomm devices (in a future commit).
On Qualcomm devices this provides an uplift of 16% when using shader_balls.blend
Pull Request: https://projects.blender.org/blender/blender/pulls/131053
`flip_axis` is currently an enum RNA property. This makes impossible to
toggle the individual axis. Now fixed by converting the property to
boolean. UI drawing code is same as done for mirror modifier.
New enum values are introduced for each axis
Resolves#70237
Pull Request: https://projects.blender.org/blender/blender/pulls/132849
In preparation for allowing the Nurbs reader to import as curves rather
than mesh, change `USDCurvesReader` to be abstract so we can share most
of the boilerplate in the base class. The existing basis-curves code is
shifted into a new `USDBasisCurvesReader` class.
Pull Request: https://projects.blender.org/blender/blender/pulls/132954
- Previously, `change_frame_invoke` always ran
`sequencer_skip_for_handle_tweak` check, even if the user was not
using the sequencer. Now, the check is only done if the user is in the
sequencer, where it is possible for them to tweak strips.
- It is now impossible to change the frame from the sequencer preview,
so remove that logic.
- Also add some explanatory comments for RCS keymap logic in the code.
Part of Code Quality Project outlined in #130975.
This patch eschews warning messages urging the user to "select all
related strips" when copying or creating new metastrips and instead
automatically includes those related strips in the operation.
- Attempting to copy or create a metastrip with no strips selected no
longer delivers a warning.
- When copying strip(s), if there are related effect chains, they will
be automatically selected and included in the copy if the operation
succeeds.
- The decision to select related strips was intentional, as it allows
the user to easily see the entire effect chain and thus which strips
were copied.
- When creating a new metastrip, if there are related effect chains,
they will automatically be included in the resulting metastrip.
- This is done using a new
`SEQ_query_strip_connected_and_effect_chain()` iterator. This
iterator is only used for metastrips, and not copying, since the
user may wish to only copy single strips in a connection, but
connected strips should always stay together in a metastrip/seqbase.
Pull Request: https://projects.blender.org/blender/blender/pulls/132930
Event Icons, those typically shown on the taskbar to indicate keymap
entries, can differ in width. This length is not taken into account
for the modifier keys used when showing collapsed XYZ operations. This
PR just does so.
Pull Request: https://projects.blender.org/blender/blender/pulls/132945
Make it have similar display style and placement as current frame
indicators used elsewhere (timeline, animation etc.), i.e.
time_scrub_ui.cc draw_current_frame:
- The text label is centered on the frame (instead of left aligned),
- Background box uses rounded corners,
- Background box uses padding that scales with overall UI scale,
- Text color uses TH_HEADER_TEXT_HI which makes it more readable
This partially addresses issue #124287 (better text legibility, and
due to label being centered it is less clipped when on the right
side). But fully solving the issue would probably have to be done
across the board for all current frame indicators, with some design
work.
Screenshots in the PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/132911
Changing the active collection redraws many regions, not the Outliner
header though (blender itself does not need a redraw there -- it does
not present anything related to active collection in the header). This
was requested from Addon devs in #109995 (placing active collection
related buttons there).
Pull Request: https://projects.blender.org/blender/blender/pulls/111725
Don't change the object's active material when adding a material slot. This
active material will be used by brushes with no pinned material, while the
added slot is meant for the pinned material.
The if-statement in `BKE_grease_pencil_object_material_ensure_from_brush()`
would change the active unpinned material, even though it was only meant to
handle the pinned material. This was not a new issue, it was just unlikely to
run into it.
Before brush assets were introduced this if-statement would not be
executed when activating any of the default brushes. Afterwards it would
be, because the material was newly linked (because the brush asset was
linked) and so there was no material slot created for it yet.
Pull Request: https://projects.blender.org/blender/blender/pulls/132865
Overlay engine rendered the editor background incorrectly when no image
is present. It used to render an alpha checker background indicating
that an image was present. The cause for this was that the in front
depth texture was attached, but isn't used at all.
The second change is that the image prepass should only be drawn when
there is an image present in the image editor other wise external the
prepass would alter the depth texture indicating that there is an image
present.
Pull Request: https://projects.blender.org/blender/blender/pulls/132847
A pass at cleaning up / improving the code documentation for the layered action
C++ classes.
There is still more work to do here, but this should be good for an initial
first pass. I've focused on clarifying the behavior of and updating stale docs
of the methods in the action-related C++ classes.
Pull Request: https://projects.blender.org/blender/blender/pulls/131318
A separate function is declared/defined `uiLayoutPanelPropWithBoolHeader`,
it will add a boolean property to the panel.header.
Clear decorate and separator flag, otherwise they will offset the panel
header horizontally and also adds animate decorator on the right side.
Resolves#131623.
Pull Request: https://projects.blender.org/blender/blender/pulls/132726
Similar to other visibility properties, include "hide_viewport" in
collection properties tab. One issue is that, when collection is
disabled, automatically parent collection is selected or tab is gone
when parent collection does not exist. The check was added in
0a903e7ab1, it doesn't seem very useful so
removed that.
Pull Request: https://projects.blender.org/blender/blender/pulls/132107
Previously there are two problems with grease pencil transformation:
1. Transform in Grease Pencil Opacity mode would change stroke thickness
if "Scale Stroke Thickness" is enabled.
2. "Scale Stroke Thickness" is ineffective when scaling strokes in edit
mode while in GPv2 implementation it will scale stroke thickness in
sync with overall dimensions.
This patch fixes those problems by:
1. Altering the logic of determining which attribute to feed into the
TransData.
2. Swapping the arguments for fall off interpolation (Previously was
inverted, causing the factor to always be zero hence appeared to be
ineffective).
Pull Request: https://projects.blender.org/blender/blender/pulls/132274
There's a "Render -> Render Audio" operator that pretty much calls into Audaspace functionality directly. This PR adds two new options in there, that boThere's a "Render -> Render Audio" operator that pretty much calls
into Audaspace functionality directly. This PR adds two new options in
there, that both feel like an oversight:
- There's an option for AAC container, when someone wants to render
into .aac file. Previously you could render AAC audio, but only in
MKV (Matroska) container. This is a user request #131980.
- When using MKV (Matroska) or Ogg container, it did not list Opus as
an audio codec that can be used. This felt like an oversight; both
the rest of Blender and Audaspace can handle that, jus the option
was not spelled out in the RNA enums.
Pull Request: https://projects.blender.org/blender/blender/pulls/132877th feel like an oversight:
- There's an option for AAC container, when someone wants to render into `.aac` file. Previously you _could_ render AAC audio, but only in MKV (Matroska) container. This is a user request #131980.
- When using MKV (Matroska) or Ogg container, it did not list Opus as an audio codec that can be used. This felt like an oversight; both the rest of Blender and Audaspace can handle that, jus the option was not spelled out in the RNA enums. Note however that without fix in #132872 the Matroska container continues to be useless in that it produces wrong result.
Upstream Audaspace PR for the 2nd point: https://github.com/neXyon/audaspace/pull/47 (was just merged!)
Pull Request: https://projects.blender.org/blender/blender/pulls/132877
When running versioning for the Glare node, the code assumes the ID
given by the iterator belongs to the scene containing the node tree. But
this might not be the case, as the Glare node might be inside a node
group, in that case, the ID will be the node tree itself.
To fix this, recursively go over the node trees starting from the scene,
passing the scene down all the way. And for node groups not used by any
scene, assume the first scene, since this is better than not doing
versioning.
Pull Request: https://projects.blender.org/blender/blender/pulls/132869
Looks like this regressed in c1f5d8d023 (blender 3.1), basically
since then if there was no video, then no audio was ever written
either.
From what I can tell, the original change tried to fix the problem
that "file size autosplit" logic was after video, but before audio
data writing. So it moved audio writing to be before the split (good),
but also (not sure whether by accident) moved audio writing to
only happen if video is written.
Pull Request: https://projects.blender.org/blender/blender/pulls/132874
- In "Surface" mode the depth buffer needs to be cached after constructing the base DrawingPlacement, otherwise there is no depth data for projection and the origin is used as a fallback.
- The DrawingPlacement relies on the RegionView3D matrices to project from the rendered image back into 3D space. Because the boundary projection is called while the rv3d matrices are still set up for the image render it will look up the wrong pixels from the depth buffer. The solution is to make sure the viewport reset happens before projecting the boundary, i.e. by making sure the reset function is called before `process_image`.
- The aspect ratio needs to be taken into account for the boundary-to-strokes transform, otherwise the placement is wrong depending on how much the region aspect deviates from square.
The code for computing the zoom factor and offset has also been cleaned up and documented somewhat better, and now uses the `Bounds<float2>` struct instead of old `rctf`.
Pull Request: https://projects.blender.org/blender/blender/pulls/131321
Inside sequencer_main_cursor, the logic for showing a custom cursor
was already ignoring the time scrub ruler area, and not showing
the strip edge resizing cursors. However confusingly enough, actually
clicking there was still going into the
ED_sequencer_pick_strip_and_handle which found a strip edge and
returned it. Modify ED_sequencer_pick_strip_and_handle to return empty
selection when mouse is inside the time scrub ruler.
Pull Request: https://projects.blender.org/blender/blender/pulls/132891
Depth buffer caching was broken in 62897317bd. The `use_basic` parameter was removed but `use_gpencil`
should remain unmodified. This caused overlays to be included in the depth buffer for Grease Pencil.
Pull Request: https://projects.blender.org/blender/blender/pulls/132871
The `copy_layer_group_content` function was using the `LayerGroup::nodes()` API
for iterating over layers and inserting unique copies into the target geometry.
This function lists __all__ the layers inside a group, not just direct children.
A layer inside a group will be copied twice or more this way, once for the root
layer and for any of its parent groups. Looping only over directly child layers
and groups is the correct thing to do here.
Pull Request: https://projects.blender.org/blender/blender/pulls/132868
Multi-column lists are supposed to collapse to single-column when they
are estimated to be wider than the available window width. However,
current code has two errors. First the calculation of the maximum
number of possible rows is based on entire screen height when the most
available is a bit less than half. This too-large value was used in
the calculation of widths, yet the maximum rows is actually clamped
to about 24 for uncategorized lists. Whenever the former is greater
than the latter this could cause collapsing to not occur. This issue is
only really noticeable for lists in Nodes as these can be shown much
smaller than regular size. This PR fixes the max-row calculation and
uses this correctly when breaking lists without categories.
Pull Request: https://projects.blender.org/blender/blender/pulls/132881
In a Camera's properties you can "Reset to Default" on "Focal Length"
because "lens" is a direct member of Camera and it has "50.0f" as its
default value in DNA_camera_defaults.h. However change the "Len Unit"
to "Field of View" and what you are changing is "angle". This is not
a member of Camera but is a calculated value based on sensor size. So
"reset to default" makes this "0", which is invalid and otherwise not
possible to enter. This PR uses RNA_def_property_float_default to set
a default value of 0.6911504f radians which is the 39.6° FOV for the
default 50mm lens.
Pull Request: https://projects.blender.org/blender/blender/pulls/132364
For node region, `event_cursor` is true, it sends update to the cursor
every draw call, this restores the cursor `WM_CURSOR_X_MOVE`.
Issue is originally caused by e6d941cdf4 and it introduced couple other
issues. So best fix would be to revert the commit. And to fix#129178,
restore modal cursor after drawing context menu, i.e. execution of
`ui_popup_context_menu_for_button`.
Pull Request: https://projects.blender.org/blender/blender/pulls/132848