Replaces current basis function calculation which seems to be a direct
implementation of the recursive NURBS formulation. New implementation
avoids the need to check for zero divisions during iteration. Out of
bounds checks are also converted to asserts, assuming input provides
valid span index.
Performance wise this nets a 7+% performance improvement with the
average result being as fast or faster then the fastest execution
from previous implementation!
Pull Request: https://projects.blender.org/blender/blender/pulls/144457
This PR renames the Shader and Compositing RGB nodes to unify them with
the Geometry Color input node. The Compositing node output socket was
also renamed from "RGBA" to "Color" following other nodes. This is a
5.0 breaking change as part of #96219
Pull Request: https://projects.blender.org/blender/blender/pulls/140495
Changes to the status bar display when using the Sculpt Expand
operator, which currently takes up too much horizontal space. This
mostly removes "toggle", combines some increase/decrease keys, etc.
Pull Request: https://projects.blender.org/blender/blender/pulls/145009
This PR allows area maintenance that is compatible with touch
interfaces. The top-left action zone is widened to minimum hitspace,
shown as a "gripper" icon. A simple press brings up a menu with area
maintenance options, including split, docking, tear off, maximize, and
Close.
Pull Request: https://projects.blender.org/blender/blender/pulls/144591
It is assumed that within a node tree at most one viewer is active at a
time, see also `node_tree_set_output()`. So we ignore selection when
deactivating a viewer and rely on the active node from context instead
to decide which viewer node should be deactivated.
Motivation: #145506 and #145509
Pull Request: https://projects.blender.org/blender/blender/pulls/145505
This replaces the hardcoded function with modifier type callbacks
to make it easier to customize the reading/writing
for custom modifier data.
No functional changes.
Pull Request: https://projects.blender.org/blender/blender/pulls/145737
Enabling Dynamic Topology can result in a warning message when there
are existing attributes or modifiers. Unfortunately this warning looks
like an alert (single OK button) but is actually a confirmation. That
it operates when you click the single button is not clear. Nor is it
clear how to cancel. This PR replaces this with the current style of
confirmation, with clear execution and cancel buttons.
Pull Request: https://projects.blender.org/blender/blender/pulls/145534
This PR updates the VSE strip modifiers interface.
It now uses the same design as the object modifiers.
Changes:
* Except for the "Mask Input" subpanel, the modifier UIs are unchanged.
* Modifiers can now be rearranged using drag & drop.
* Additionally, there is now an active strip modifier. This is exposed
though python via `strip.modifiers.active`.
This is in part for !139634 which needs the concept of an active modifier.
Notes:
* The `modifier.cc` file included all the implementation of all modifiers.
With the addition of a another new callback in this PR, this file was
getting quite big so I split everything out into individual files for all
modifiers. The modifiers are getting registered at launch.
* The modifier panels are getting added using a UI template
(`template_strip_modifiers`) very similar to the object modifiers.
Pull Request: https://projects.blender.org/blender/blender/pulls/145367
If the mirror bone was already existing, it was not copying over
`Display As` (which was reported) but also `Bone Color` was not
transferred.
Since the second does not suit _all_ workflows, this was made
optional (defaulting to OFF).
Pull Request: https://projects.blender.org/blender/blender/pulls/145221
Currently attribute names are often added to a hash map that doesn't
maintain the original order. This is convenient for developers but it's
better for users if attributes aren't arbitrarily reordered. Instead,
use `VectorSet` which gives the benefit of a hash map but maintains the
insertion order. The main downside is the loss of O(1) removal which we
benefited from in a few cases. I used string comparison instead for now.
Fixes#144491, #122994
Pull Request: https://projects.blender.org/blender/blender/pulls/145668
Trimming or erasing a grease pencil drawing would break the weights
because `vertex_group_names` wasn't transferred appropriately.
This PR adds deform group copying to `compute_topology_change`,
where other variables are transferred.
Pull Request: https://projects.blender.org/blender/blender/pulls/145516
This breaks backwards compatibility.
The property `activate_new_action` of the `POSELIB_OT_create_pose_asset`
operator was deprecated previously and is no longer in use.
Removing it just breaks any uses of that operator via Python
is they pass that property.
Pull Request: https://projects.blender.org/blender/blender/pulls/145587
Even when a device is capable to allocate a buffer with a certain size
it can still fail the allocation due to driver internals. This could be that
the memory area doesn't support the required flags or fragmentation.
This PR changes downloading GPU textures to CPU to use at max buffer
sizes of 2GB. Larger textures will be split over multiple buffers.
Pull Request: https://projects.blender.org/blender/blender/pulls/145568
ffmpeg internals log a warning when telling it to use more than 16
threads, so cap thread count to that.
Testing the change locally on Ryzen 5950X (where it was using 32
threads previously), capping at 16 is actually faster:
- Playback of one 4K video downsampled at 1080 res:
seq_render_strip_stack average 9.12ms -> 7.83ms
- Playback of two blender 1080p videos: seq_render_strip_stack
average 5.79ms -> 4.94ms
I suspect this might be because this CPU has 16 physical cores
with SMT (so 32 "logical" threads), and depending on the workload
capping at number of physical cores might be better.
Pull Request: https://projects.blender.org/blender/blender/pulls/145665
When panels in node groups were introduced, the interface data of a tree was
moved from `tree.inputs_legacy/outputs_legacy` to `tree.tree_interface`. For
forward compatibility, the old interface was still written. Since Blender 4.5
can read the new format and older versions are not able to open files created in
5.0 directly anymore, it's fine to remove this forward-compatibility code now.
Also fixes#145278.
Pull Request: https://projects.blender.org/blender/blender/pulls/145489
With the changes to area border drawing and the addition of selectable
border width it is possible to get areas that are below header height
while moving them around. This PR just tightens that up so they always
remain at least the minimum height.
Pull Request: https://projects.blender.org/blender/blender/pulls/145704
Flag regions that are only a couple pixels tall as "too small" so they
are not drawn. The previous border drawing overwrote the outer pixels
of the area but the new drawing does not, which can sometimes show a
single line of pixels when the area is minimized to just header height.
Pull Request: https://projects.blender.org/blender/blender/pulls/145696
PR #143513 forgot to grab the scene from `CTX_data_sequencer_scene`
since this was before the sequencer scene patch landed.
So if the scene differed from the sequencer scene it would find the
wrong strips to slip.
This was caused by incorrectly implemented store/restore mechanism for
`move_strips` property. The property was restored to original state
immediately after strip was added when using drag and drop. So when any
other property was modified, on redo the modal move operation would
start.
The store/restore mechanism was removed, because it is possible to only
rely on checking whether invoke function was called by drag event.
The move strips property is now hidden in redo panel, because it does
not make sense to ever change it there. This is done by setting hidden
`skip_move` property and setting `move_strips` property hidden flag.
Another slightly related bug was discovered, that move strips feature
is incompatible with replace selection feature being disabled. So the
property is not drawn when move strips feature is enabled.
Pull Request: https://projects.blender.org/blender/blender/pulls/144172
Stored undo step data for position changes in sculpt mode are now
automatically compressed. Compression is run in background threads,
reducing memory consumption during sculpting sessions while adding
little performance overhead.
For testing and benchmarks, memory usage is now available through
`bpy.app.undo_memory_info()`. Undo memory usage is now tracked by the
existing automated benchmark tests. Some changes to the web benchmark
visualization present the data a bit better.
ZSTD compression is run asynchronously in a backround task pool.
Compression is only blocking if the data is requested immediately for
undo/redo.
Co-authored-by: Hans Goudey <hans@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/141310
This feature works like the select circle in any other modes. The user
can press "C" in preview or timeline and then select or deselect strips
by pressing the left or middle mouse button.
It’s an enhancement for the VSE preview because:
1. It makes it more similar to other editors in Blender
2. This behavior makes it easier to select specific overlapping strips
in preview, that is because the select circle only checks for the
origin of the strip.
Pull Request: https://projects.blender.org/blender/blender/pulls/141422
Now that there are Rec.2100 PQ and HLG displays, the additional HDR option
for video export is redundant. Typically you would now select a HDR display
early on and do all your video editing with it enabled.
For saving a HDR video, the encoding panel will now show the name of the color
space, and warn when the video codec or color depth is incompatible.
Since this is now based on interop IDs for the dislpay color spaces, we can
map more of those to the appropriate CICP code. This works fine for Display P3,
in my tests it looks identical to sRGB except that the wide gamut colors are
preserved.
However Rec.1886 and Rec.2020 are problematic regarding the transfer function,
although the latter at least has the correct primaries now. So it should be
a net improvement and this could be looked at later if anyone wants.
---
Background:
* Rec.1886 and Rec.2020 display color spaces in Blender use gamma 2.4.
* BT.709 trc is almost the same as gamma 2.4, so seems like the correct choice.
* We already write sRGB with BT.709 trc, which seems wrong.
* Yet sRGB matches exactly between Blender display and QuickTime, while
Rec.1886 and Rec.2020 do not.
* Display P3 with BT.709 trc matches sRGB with BT.709 trc, just adding the wide
gamut colors. So that is what is used for now. Also using the sRGB trc the
file is not recognized by QuickTime.
There is apparently a well known "QuickTime gamma shift" issue, where the
interpretation of the BT.709 trc is different than other platforms. And you need
to do workarounds like writing gamma 2.4 metadata outside of CICP to get
things to display properly on macOS.
Not that QuickTime is necessarily the reference we should target, but just to
explain that changing the previous behavior would have consequences, and so
it this commit leaves that unchanged.
Pull Request: https://projects.blender.org/blender/blender/pulls/145373
Like image saving, this may be modified from the scene ImageFormatData
to contain the effective color management settings taking into account
overrides.
For upcoming changes, we will need to know the image buffer colorspace when
starting to write the video instead of only on the first frame.
Pull Request: https://projects.blender.org/blender/blender/pulls/145373
Menus listing assets (which the search menu covers) rely on notifiers to
know when their chached asset catalog tree is invalid and needs
rebuilding. The 3D view notifier listener would not check for the
notifier that is sent when the asset storage was cleared after a file
save.
Pull Request: https://projects.blender.org/blender/blender/pulls/145583
The Movie Distortion node produces artifacts when used with half
precision context. This is because distortion grids require full
precision for high quality results, which this patch does.
Pull Request: https://projects.blender.org/blender/blender/pulls/145640