"seq3" input for VSE effect strips has been there ever since
"initial revision" commit in 2002, with comment "pointers voor effecten"
even. But it has never been used, so remove all code that pretends
to do something with it.
Pull Request: https://projects.blender.org/blender/blender/pulls/127401
The issue is that the boolean node did not propagate edit data and thus lost
information about gizmos. Now the boolean node propagates edit data from
all geometry inputs.
Pull Request: https://projects.blender.org/blender/blender/pulls/127457
This adds a variant of `accumulate_counts_to_offsets` which checks for
overflows. The hot loop stays essentially the same, it just uses a `int64_t`
instead of `int` for the counter now. For now the error state is returned by
using an `std::optional`. Alternatives could be to throw `std::overflow_error`
or to use some Result/Expected type in the future.
Obviously, there are more places that should handle this kind of error. It's
also not obvious how to propagate that error further up yet so that we can
display e.g. a warning in the node. That decision should be applicable to other
nodes too. For now, there is no warning on the node.
Pull Request: https://projects.blender.org/blender/blender/pulls/127184
For `SubdivCCG`, replace the dynamic array-of-struct data with separate
arrays for positions, normals, and masks. This decreases memory
bandwidth requirements for loops that only access one of these arrays.
It also significantly simplifies data access, making it more similar
to mesh data where it can just be accessed with indices.
In a simple test this change speeds up the multires sculpt brush
benchmark by 32%. It also slightly reduced BVH build time by about 12%.
In practice this means completely replacing usage of `CCGElem` for
`SubdivCCG`. The struct is still used in the older subsurf baking code
though. Removing that is a much trickier task that doesn't have short
term benefits.
Part of #118145.
Pull Request: https://projects.blender.org/blender/blender/pulls/127262
Before efb511a76d this was not necessary, because the G_FILE_COMPRESS option
was not disabled when writing memfile undo steps. However, compression is
generally disabled when writing quit.blend or autosave files.
When doing average/min/max luminance calculations for tonemapping, ignore
pixels that are outside of the strip rectangle. Due to how VSE innards work,
when a strip is positioned to not cover the whole screen, "the rest" is filled
with transparent black. For tonemapping, this was dragging average calculated
luminance way down.
Images of the issue in PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/127207
When loading an EXR image, first we were allocating memory for it,
then clearing it to zero, then using OpenEXR to load the data. But
the process of loading will overwrite all the pixel values anyway,
so it is pointless to do the first clear.
On a test VSE file that has two 1920x1080 EXR image sequences blended
together, plus some color correction on top, playback framerate of it:
- PC: 12.6 -> 13.2 FPS (Ryzen 5950X, RAM bandwidth ~32GB/s)
- Mac: 27.3 -> 29.5 FPS (M1 Max, RAM bandwidth ~400GB/s)
Pull Request: https://projects.blender.org/blender/blender/pulls/127427
Image/movie strip controls color controls: "Saturation" and "Multiply" were
both single-threaded code. Multi-thread both of them. Timings to apply them
on a 4K resolution byte image, on Ryzen 5950X (Win10/VS2022):
- Saturation: 97ms -> 6.3ms
- Multiply: 11.5ms -> 1.1ms
Pull Request: https://projects.blender.org/blender/blender/pulls/127409
Structure the multires grids PBVH build to be similar to meshes,
splitting face indices into groups instead of grid indices. This
removes one step of indexing, decreases the amount of temporary
data, and allows sharing the majority of the implementation with
the mesh BVH build.
In a test file with 4 million faces at multires level 1, this reduced
BVH build time from 149 to 70 ms. The improvement will be
significantly lower for higher subdivision levels.
Pull Request: https://projects.blender.org/blender/blender/pulls/127429
The interpolation tool computes the point count of output curves as the
maximum of each curve pair. The pairs are ordered by to/from frame
numbers. The point counts were stored in the "original" pair order, so
curve density could be quite incorrect.
Pull Request: https://projects.blender.org/blender/blender/pulls/127353
Fix `typedef struct ActionChannelBag { ... } ChannelBag;` so that the
'typedef name' is also `ActionChannelBag`.
Note that this does _not_ change the struct name in DNA. It's purely for
the naming in our code.
No functional changes.
Interpolate tool was only mixing point attributes, leaving the
output curves without most curve attributes. Now the interpolate_curves
functions actually copy or mix curve attributes as well.
Only float-based attributes are interpolated for now to avoid
meaningless values for material indices, boolean flags, etc. Other
attribute types are simply copied from the first curve in each pair.
Pull Request: https://projects.blender.org/blender/blender/pulls/127350
Clarify the 'disabled' message in the tooltip for certain bone collection
operations. They now tell you to create an override "on the Armature Data",
and not just "on the Armature". This should clarify that it's not enough
to create an override on the armature Object.
Pull Request: https://projects.blender.org/blender/blender/pulls/127405
Support Object > Convert > Mesh option for grease pencil v3.
This does the conversion by first converting it into Curves then use the
same routine to convert Curves into Mesh wires.
Pull Request: https://projects.blender.org/blender/blender/pulls/123835
Pressing ctrl-click should switch the drawing tool into a eraser
for grease pencil. This is now handled by detecting
`EVT_TABLET_ERASER` and switch to `BRUSH_STROKE_ERASE` mode.
Pull Request: https://projects.blender.org/blender/blender/pulls/126962
Vulkan would crash when generating a thumbnail in case there is no
3D viewport in the active workspace. When this happens the front buffer
is downscaled as thumbnail. We didn't create a front buffer as swap
chains are handled differently.
We work around this issue in the same way as Metal does. Create a dummy
front framebuffer and share the surface texture. When the thumbnail
generator reads from the front buffer it will read the data that was
created by the back buffer.
Pull Request: https://projects.blender.org/blender/blender/pulls/127393
Fix a crash that happens when drawing Action groups in the dope sheet, when
Blender is built without experimental features (hence without Action
slots) and it has loaded a blend file with slotted Actions.
Basically a pointer needs to be set to `nullptr` when reading such a file,
as it ensures that the rest of the code treats the group as "from a legacy
Action".
Pull Request: https://projects.blender.org/blender/blender/pulls/127339
Edit mode selection returns incorrect indices. The reason is
that the extent of the area downloaded to the CPU for evaluation was
incorrect and read pixels could not in the place where they are
actually stored.
Was an oversight when fixing face selection. It wasn't that noticeable
there as faces typically cover a larger space.
Pull Request: https://projects.blender.org/blender/blender/pulls/127386
Previously it was assumed that exiting the local-view succeeded
even when nothing was changed.
Now VIEW3D_OT_localview doesn't perform any updates
when existing the local view does nothing.
Entering local-view, then setting an axis via the num-pad and exiting
local view would restore the original axis but not the axis-roll.
Store the axis-roll for local-view & smooth-view operations.
When the viewport orientation matched the view axis,
setting an axis view didn't redraw the region.
This caused the viewport text & grid not to update.