Panel toggles are implemented by having a boolean socket with
`is_panel_toggle` set to `True`, as the first item in that panel's children.
These sockets are then hidden from the user, as the checkbox gets drawn
in the panel's UI.
In specific circumstances described in the bug report, the active selection
can sometimes land on these sockets. Leading to the user being able to
directly access these internal sockets.
The changes in the patch make the "Remove Item" operator check if
the resulting selection lands in a toggle socket, and move the selection
to that toggle's parent panel if that is the case.
Pull Request: https://projects.blender.org/blender/blender/pulls/141859
Teleport was either moving too far or not far enough with a scaled
scene. Remove scene scaling in this case it doesn't make sense when
interpolating between two points.
This initial commit properly clamps handles for video/audio strips, and
provides functionality to enable/disable the behavior for all strip types
(addresses #90280).
Toggling handle clamping is done with "C",
just like with the redesigned slip operator (#137072).
If a strip is not already clamped when you start moving its handles,
then clamping behavior is disabled starting out. This means no abrupt
clamp until you explicitly ask for it.
Transform logic was altered, fixing a few bugs:
- When initializing a transform, `createTransSeqData` would already
create some clamping data for channels. This patch replaces it with
`offset_clamp` (for unconditional clamping which cannot be disabled)
and `handle_xmin/xmax` (for hold offset clamping, which is optional).
- Collecting this data ahead of time is necessary for the double
handle tweak case -- `flushTransSeq` only works one strip at a
time, so we can't clamp post-hoc.
- In `applySeqSlideValue`, we apply `transform_convert_sequencer_clamp`
before values are printed to the header, but let the unclamped values
get flushed to the strips themselves. This is so that we can have the
data later at the individual strip level to recalculate clamps.
Otherwise, if transform values are clamped preemptively, then we have
no idea whether strips are clamped vs. merely resting at their
boundaries.
Note that currently, handle clamping is drawn identically to overlaps.
More information in PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/134319
As mentioned in comments on #43646, a negative channel value in preview
view settings can be used to climb the metastack. But the functionality
did not work as expected in most cases.
This combines a one-line fix by Sergey with an updated description for the
property which documents the feature.
In the future we may want to change its operation to be less obscure,
since it has some use-cases in aligning strips within a metastrip with
those outside of it.
The `DEG_foreach_dependent_ID_component` is only used to mark objects
whose base will have `BA_SNAP_FIX_DEPS_FIASCO`.
If this flag is not used, the `DEG_foreach_dependent_ID_component` is
also not needed.
This was caused by the Material Sub pass being
shared for all materials using a same texture.
This patch simply adds the sampler state inside the
Map key. This will create one unique subpass for each
texture and for each sampler state.
Pull Request: https://projects.blender.org/blender/blender/pulls/141978
On Windows, filter out the most common archive file formats when adding
OS Quick Access items to the File Browser's system list. These items
can be opened like folders in the OS, but not within File Browser.
Pull Request: https://projects.blender.org/blender/blender/pulls/138884
During transform operations, the 'Snap Toggle' shortcut
(default: Shift + Tab) enables or disables snapping.
Previously, the UI did not reflect the toggle state until the operation
was finished.
It now updates live during the operation.
Broken by cf92af3ac4
The `thin_film_bsdf` node no longer exists in the version of MaterialX
that we use. It's been removed in favor of specifying the thin-film
values directly on the `dielectric_bsdf`, `conductor_bsdf`, or
`generalized_schlick_bsdf` nodes.
There is another use of the node inside the Principled BSDF's `BSDF`
output case. The `Surface` case is correct but the BSDF layering setup
still needs addressed. This PR will get the tests passing though.
Pull Request: https://projects.blender.org/blender/blender/pulls/141974
Since we expect the result of `rcp` and `safe_rcp` to always be in the
range of [0, 1], it doesn't make sense to allow passing in integer types
without casting them, as this has a high possibility of introducing
unwanted behavior by only returning either 0 or 1.
To prevent this, this commit adds a static assert on the type.
Pull Request: https://projects.blender.org/blender/blender/pulls/141567
This reverts commit 81e862140f
binary packages turned out to have issues for debug builds on windows
as they link to python_311d.dll and none of the binary packages offfered
on pypi offered a debug build. Building pydantic from source was rejected
due to no rust build infrastructure being in place yet and deemed not
worth the effort for this one library dependency, an alternate solution
was chosen by the assets team that requested this dependency.
Increase the default width of some nodes by around 10% or less in order
to improve readability of the default parameters or labels under
default zoom level and default UI scale.
The following nodes are affected:
- Anti-aliasing
- Bokeh Blur
- Bokeh Image
- Chroma Key
- Color Key
- Color Spill
- Convert Colorspace
- Disatnace Key
- Double Edge Mask
- Image
- Keying
- Kuwahara
- Voronoi Texture
- Noise Texture
- Brick Texture
See PR for screenshot examples.
Pull Request: https://projects.blender.org/blender/blender/pulls/141662
The orbit fallback position could be used before being initialized
from the selection (zeroed values).
Further, the value could be used between different blend files where
the previous values wouldn't make sense.
Move the center point storage from a static variable to View3D runtime
data and only use when initialized from the selection.
This PR introduces a more precise sleep function `BLI_time_sleep_duration`
using high-resolution timers on Windows. By default, Windows only has a
resolution of 15.25ms for the regular `Sleep` function. Using more precise
timers makes sure that Blender can wake from sleep quicker and improves
performance at high frame rates.
High-resolution timers may have better energy efficiency than using
`timeBeginPeriod`/`timeEndPeriod` that change the timer resolution globally
on some versions of Windows.
Pull Request: https://projects.blender.org/blender/blender/pulls/140221
Recent fix to ensure cursors never display negative numbers [0]
didn't work when the input value was std::numeric_limits<int>::min().
Resolve using an unsigned cast before negating.
[0]: 747ab523c3
This fixes the anonymous attribute lifetime inferencing for the closure zone and
the evaluate closure node. It also adds new regression tests for cases where a
closure outputs a field.
Pull Request: https://projects.blender.org/blender/blender/pulls/141925
Displaying negative numbers would attempt to read from a negative
array index on systems that don't support RGBA cursors.
Resolving by making the value absolute before displaying.
- Use a bounding box based on the fonts dimensions to fix jittering
as numbers change because of differences in glyph bounds.
- Always show a cursor even if the text is empty.
- Use integer arithmetic to simplify bounds calculations and avoid
having to round the resulting values.
- Increase the maximum width of the text to twice the cursor size
since the text could be quite small when limited to the cursor size.
- Extract buffer flip-Y into a function.
- Define CURSOR_HARDWARE_SIZE_MAX and reuse this constant.
When the mesh filter is used, it is possible for some runtime values
stored in `surface_smooth_laplacian_disp` to be uninitiailized. This
happens when a large portion of the mesh is masked or invisible, as the
node mask then skips processing of certain vertices.
To fix this, zero initialize the array when it is intiially allocated.
Pull Request: https://projects.blender.org/blender/blender/pulls/141914
This moves the logic to create the parent folder to data_to_c itself
rather than having cmake do it, preventing several thousand cmake instances
to be started.
see pr#141404 for details/benchmarks
Pull Request: https://projects.blender.org/blender/blender/pulls/141404
The default keymap item that triggers `Shrink/Fatten` uses the `Alt`
modifier, which coincidentally is the same key that toggles
`Offset Even`. What is undesirable.
The solution is to alternate between Alt Press and Alt Release
depending on the `Offset Even` property.
Pull Request: https://projects.blender.org/blender/blender/pulls/141904
This fixes 4 bugs all conspiring to make the referenced SubD scenario
quite broken:
- When manually creating a MeshSequenceCache, the reading of edge and
vertex crease data was skipped. Fixed by reading crease data inside
the common `read_mesh` method.
- When importing an Alembic with animated edge or vertex crease data, a
MeshSequenceCache modifier was not being added to the object. This was
due to not checking the relevant crease properties and required adding
a specialized `has_animations` function.
- When importing animated vertex crease data, a duplicate `vertex_crease`
attribute would be created, breaking the animation. Fixed by using the
attribute API rather than custom data.
- The MeshSequenceCache scenario would call into the Alembic Mesh reader
which ended up referencing deallocated stack memory for the
ImportSettings. In release builds this would cause sporadic failures
because the value of `blender_archive_version_prior_44` would be
random. There was already a very old TODO for this and we finally
really needed to address it.
A new test was added which exports animated creases on two meshes and
re-imports them back in. It verifies that each mesh gets a
MeshSequenceCache modifier added and also ensures the values of the
creases are correct for all frames.
Pull Request: https://projects.blender.org/blender/blender/pulls/141646
This is not an actual solution, it falls back to a perspective camera instead
of crashing. Note full_rastertocamera exists specifically for computing raster
size for adaptive subdivision, and changing it should not affect anything else.
Pull Request: https://projects.blender.org/blender/blender/pulls/141905
This was caused by 87c011f8bb. The drawing code for the input nodes was moved
into a new `custom_draw_fn` callback on the socket declaration. This was not
taken into account when drawing the sidebar yet, which is an oversight and was
not an intentional change.
This fix applies to all the nodes that use the new custom draw function.
Pull Request: https://projects.blender.org/blender/blender/pulls/141872
The node warnings were only referenced by the tooltip function. Since they are
recreated on every evaluation, this resulted in a use-after-free. The fix is to
just copy the node warnings into the callback.
Of course this extra copy does have some performance implications, but I don't
think those are significant currently.
Pull Request: https://projects.blender.org/blender/blender/pulls/141875
Different operations may need to lock different part of the interface,
e.g. for rendering, the image editor may still need refreshing while the
interface is locked, but when baking data into a scene, the image editor
needs to be locked because it is not thread safe to get data from a
partially evaluated depsgraph.
This is a better fix on top of 7c8b8b2457
that addresses the root cause with more flexibility for future
operations that requires different interface locking strategy as
well.
Pull Request: https://projects.blender.org/blender/blender/pulls/141866