Move several clip and mask display options into a common Overlays popover,
consistent with other editors. Includes a global toggle (Shift-Alt-Z) to
show/hide all overlays at once.
Also adds the missing annotations toggle, cursor visibility toggle, and moves mask display options in
the Image Editor into the Overlays popover due to shared code paths.
See PR for images.
Pull Request: https://projects.blender.org/blender/blender/pulls/145895
Mesh faces have a separate theme color for selected dots (1px dot in the center of the face),
in both the 3D Viewport and the Image Editor.
I don't think there is any justification for why that 1 pixel has to be a different color from rest
of the active face. Even if result isn't satisfying, we should be tweaking Face Selected color
for this purpose. 1 pixel doesn't deserve its own theme setting.
This PR removes property from both editors, and instead uses "Face Selected" color with alpha
hardcoded to 1 (removed properties didn't have alpha). Also note that dot is still visible in 3D viewport
because Face Selected color is different from Face Mode Selected color, which is used for faces
when dots are drawn.
There are no visual changes in default themes.
Pull Request: https://projects.blender.org/blender/blender/pulls/145364
MeshRuntime was null but required by the implementation
of the attribute API. This code is much hackier than necessary
anyway and should just use BMesh CustomData directly rather
than trying to be clever.
Also part of #122398.
Pull Request: https://projects.blender.org/blender/blender/pulls/146674
Implements #144061, part of the Story Tools project #135058
Add a new "Storyboarding" app template, as a quick way to start drawing
on multiple scenes/shots thanks to the VSE Sync Scene setting.
- Created based on the 2D Animation template
- Features an additional Sequencer editor with `Sync Scene` enabled.
- Adds one `Edit` scene used in the Sequencer.
- Adds one Scene asset (`Shot.000`) as example to be used as blueprint,
users can edit it and later add/duplicate in VSE to create new shots.
- Adds two scenes as example (`Shot.001`, `Shot.002`), based on the
included `Shot.000` Scene asset.
Default Edit scene length is 10 seconds, while the shots are 2 seconds
each. The default of 250 frames for each shot was a bit much and didn't
serve as good example in the Sequencer timeline.
One aspect missing is the Scene range overlay from !146165, but that can
be added via versioning.
See PR for details and screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/146658
`world.use_nodes` was initially removed in #142342. However, in #141278
we decided not to remove `material.use_nodes` from the API to
avoid breaking exporters. This commit brings the removed
`world.use_nodes` back and marks it as deprecated.
Pull Request: https://projects.blender.org/blender/blender/pulls/146629
Even when disabled, one can force the tooltip display by holding ALT
**prior** to entering/hovering a control. This PR clarifies that.
(also clarified in the actual manual separately)
Resolves#146689
Pull Request: https://projects.blender.org/blender/blender/pulls/146707
This patch removes the XY scale inputs from the Displace node. The
inputs were redundant since they were just multiplied by the vector.
This simplifies the node and improves performance slightly.
Additionally, the Vector input was renamed to Displacement since it no
longer specifies a direction.
Pull Request: https://projects.blender.org/blender/blender/pulls/146356
Indirectly linked libraries are supposed to be put under their 'best
parent' library, this has been broken in the outliner for some times.
for several reasons.
This commit addresses the 'outliner hierarchy building' part of the
problem. The 'everything ends up directly linked' is addressed by
!146667.
Pull Request: https://projects.blender.org/blender/blender/pulls/146669
Regression from 435b6743fd, when considering UI ID usages to define
if IDs are weekly direclty linked, cases where this should not be the
case (e.g. Outliber ID pointers) ended up making them directly linked.
So essentially, all linked data became directly linked when writing the
blendfile on disk!
Fixed by adding a new `IDWALK_CB_WRITEFILE_IGNORE`, to tell the
writefile code that it can ignore this ID usage (similar to the existing
`IDWALK_CB_READFILE_IGNORE` one).
Pull Request: https://projects.blender.org/blender/blender/pulls/146667
This allows to share the parsed structure between each
preprocessing step if no mutation occurs.
Also remove `matrix_constructor_linting` as this is
now enforced by the C++ compilation. Same thing for
`array_constructor_linting`.
Pull Request: https://projects.blender.org/blender/blender/pulls/146666
It is possible, though unlikely, that some sculpt mode runtime data will
be uninitialized when various application handlers run. This commit
makes the minimal change to avoid crashing in this case when exiting
sculpt mode when Dyntopo is enabled.
Pull Request: https://projects.blender.org/blender/blender/pulls/146647
As described in #135095, this adds a "mirror" option to the "Join as
Shapes" and "Update from Objects" operators, and additional menu items
with the option enabled. Like the operators, this is a convenience
feature that's functionally the same as selecting all shape keys with
changed data and running the existing "Flip" operator.
Pull Request: https://projects.blender.org/blender/blender/pulls/144098
Recent change 3a6a663a15 has some logic issues.
First, the grain size was clamped to be never lower than 256, which
doesn't make sense since the size of the array is never greater than
the number of threads. The numbers used in the division were also large
enough that multithreading wouldn't be used in many realistic cases
anyway. There's no need to cap the grain size at 1024, and also
`safe_divide` doesn't make sense in this scenario.
Pull Request: https://projects.blender.org/blender/blender/pulls/144872
To help reduce confusion, remove this property as we believe it has
little to no actual utility. Visibility, instead, remains controlled
with the `evaluation_mode` option.
Ref #134012
See PR for discussion and description of what effect this option used to
have.
Pull Request: https://projects.blender.org/blender/blender/pulls/144600
This is a port of iOS commit f3f8647 to main, for Xcode archiving to
also work for macOS bundles, allowing the bundle to be archived and
later distributed via Testflight, App Store Connect, etc...
Additonal Xcode property also had to be added to the extern draco shared
library target to prevent it from being included in the Xcode archive
(an implicit behavior for `SHARED` CMake libraries), without this,
the archive would get polluted, preventing it from being properly
recognized as a proper app bundle archive.
Pull Request: https://projects.blender.org/blender/blender/pulls/146027
So that is it possible to edit Linear HSV. Somehow the two enums don't feel
very elegant to work with, but I don't immediately have a better idea on
how to organize this UI.
I also tried to always show both the RGB and HSV sliders, but it felt
very noisy to have the HSV slider updating as you edit RGB and vice versa.
Pull Request: https://projects.blender.org/blender/blender/pulls/146612
The existing behaviour traces back from pre-2.5 era. It seems like a
general sanitization technique for any operator which may change the
view transformation.
While it still makes sense to switch to PERSPECTIVE mode when actively
calling a view operator, I don't think the same should be said by simply
switching the active scene.
This PR makes it so a temporary flag is set when switching to a scene that
has no camera. This flag is kept around until we deliberately change
perspective mode. We can eventually make it so the flag is reset again in
more occasions. But the patch is good as it is.
Ref: !146364
This deprecated function looks to have been long forgotten. Both import
and export are already available as `bpy.ops.wm.alembic_import` and
`bpy.ops.wm.alembic_export`.
Pull Request: https://projects.blender.org/blender/blender/pulls/146556
This patch reorders the inputs of some of the compositor nodes
accordingly to their importance. The importance is already quantified
internally using the domain priority of the input, so we needn't make
any subjective judgement and just order by the priority.
This breaks forward and backward compatibility if input indices were
used as opposed to input identifiers due to the different order.
Handling compatibility is not impossible, but is difficult, and it was
already ignored in many past node changes.
Pull Request: https://projects.blender.org/blender/blender/pulls/146311
Renames `'RADIAL_MENU'` to `'PIE_MENU'`, to more clearly describe what
it relates to. Internally this was already done with e425faf696.
This is a 5.0 compatibility breaking change. But I couldn't find any
usages of it in bundled scripts.
Pull Request: https://projects.blender.org/blender/blender/pulls/146651
Currently `MEM_delete` frees pointers expecting that they match to the
pointers allocated with `MEM_new`, otherwise it can cause undefined
behavior when freeing memory(using `--debug-memory` flag breaks in
place, if not it can corrupts other data, generating a incorrect back-traces).
However polymorphic objects lifetime can be managed by pointer of their
most derived type or by any pointer in their ancestor tree that defines
a virtual destructor, which sometimes can differ in offset when pointing to
the same object.
This changes ensures the correct pointer is being freed, by using the pointer
to the most derived type (returned by`dynamic_cast<void *>(...);`[0]).
----------
[0] = [dynamic_cast](https://en.cppreference.com/w/cpp/language/dynamic_cast.html): `a) If expression is a pointer to (possibly cv-qualified) void, the result is a pointer to the most derived object pointed to by expression.`
-----------
As an example, given the followings structs:
```c++
struct A {
int a;
virtual ~A() = default;
};
struct B {
int b;
virtual ~B() = default;
};
struct Derived : public A , public B {
int c;
};
std::unique_ptr<A> a_ptr = std::make_unique<Derived>();
std::unique_ptr<B> b_ptr = std::make_unique<Derived>();
```
Using std smart pointers to manage `Derived` objects can be done with `A`
or `B` pointers.
However if a `Derived` object memory is managed with `MEM_delete`,
using a `B` pointer for freeing the memory currently may silently break Blender,
since it don't accounts for the full object memory layout, the `dynamic_cast<void *>(ptr);`
cast gives a more safe pointer for freeing the memory.
Note that object destruction is successfully handled through the virtual destructor.
----------
This instead could be an assert to ensure polymorphic objects to be deleted
as the most derived object type.
Pull Request: https://projects.blender.org/blender/blender/pulls/146269
The image log render tests uses an EXR that contains INF. Workbench
with specular enabled will mix these INFs, but there is a difference
in behavior between OpenGL and Vulkan.
In OpenGL mix(0.05, INF, 0.0) will result in INF
In Vulkan this results in NaN.
This should eventually be solved in the engine to ensure consistency.
For now we disable the render test and document the limitation.
Pull Request: https://projects.blender.org/blender/blender/pulls/146648
With !142495, the minimum brush radius became 0.5px, so clamp to that
instead of 1px to allow drawing single pixels. Also change how drawing
with anti-aliasing disabled works to avoid 1 pixel brush strokes not
always appearing. Now when AA is disabled, snap the cursor to either
the corners or centers of the pixels, depending on if the diameter is even
or odd, respectively.
Fixes#71403
Pull Request: https://projects.blender.org/blender/blender/pulls/146384
This commit bumps up the time delay while running these tests from
1/60th of a second to 1/6th of a second to ensure that the new window
is created prior to the rest of the test running while.
Pull Request: https://projects.blender.org/blender/blender/pulls/146309