Image vectorscope is getting some visual updates (#116974), here make the
Sequencer vectorscope match the look fairly closely:
- Use same scaling factor for both U & V, instead of trying to use all
the texture space.
- Instead of drawing hexagonal area between color primary "pure" and
"75% saturation safe" points, draw a circle with colored background
and five inner rings.
- Indicate "75% saturation primaries" as wire rectangles with a text label.
Images in PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/117738
Without doing a stroke "manually", colorspace initialization on
UnifiedPaintSettings was never done.
This lead to wrong colors in the past, since modern CS code with OIIO
this also crashes.
Colorspace was added into UnifiedPaintSettings in 6f153046e0 to avoid
doing this when sampling the brush texture images [which is good], but
the initalization was done in `paint_brush_update`.
We dont need to have this called for every step (it was skipped anyways
after one run), so it seems we can move this out of `paint_brush_update`
and put this into `paint_stroke_new`.
Thx @RevDr for initial findings.
Pull Request: https://projects.blender.org/blender/blender/pulls/117756
The render shadow loop would always tag new casters to update
the tiles that were already rendered. This patch split the
caster tagging into it's own pass and move it out of the loop.
Also adds a needed `async_flush_to_host` to make sure the
statistic buffer is up to date.
For ARMATURE_OT_move_to_collection, when moving to a NEW collection,
title of "Move to New Collection" and confirm button that says "Move".
For POSE_OT_paths_calculate, title of "Calculate Paths for the Selected
Bones", confirm button text of "Calculate"
Pull Request: https://projects.blender.org/blender/blender/pulls/117741
Part of overall "improve image filtering situation" (#116980), this PR addresses
two issues:
- Bilinear (default) image filtering makes half a source pixel wide transparent
border around the image. This is very noticeable when scaling images/movies up
in VSE. However, when there is no scaling up but you have slightly rotated
image, this creates a "somewhat nice" anti-aliasing around the edge.
- The other filtering kinds (e.g. cubic) do not have this behavior. So they do
not create unexpected transparency when scaling up (yay), however for slightly
rotated images the edge is "jagged" (oh no).
More detail and images in PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/117717
The root cause is still unknown. But replacing the
use of the depth texture by the hiz buffer fixes the
issue.
The issue was apparent on Linux + Mesa + AMD.
Store the 'expanded/collapsed' state of the bone collection tree view in
the DNA data of the bone collections themselves. This way the tree state
is restored when loading the file.
This commit also adds some code to the abstract tree view classes, for
supporting synchronisation of the extended/collapsed state between it
and external data. It follows the same approach as the handling of the
active element.
RNA wrappers have been added to make it possible for Python code to
expand/collapse parts of the tree.
Library overrides are supported for this property, so the
expanded/collapsed state of linked armatures can be locally saved. If
there is no override, the `is_expanded` property is still editable;
changes will not be saved to file in that case, though.
Pull Request: https://projects.blender.org/blender/blender/pulls/116940
The function name "operator poll message set" is rather troublesome, as:
- the message is only used when the operator is disabled, and
- the message is shown if the operator is disabled by any means, and not
just limited to the `poll()` function returning `false`.
A better name would be `CTX_wm_operator_disabled_msg_set`, but refactoring
that is for another time. Now at least the behaviour is documented.
No functional changes.
- Adding new repositories now differentiates between "Online" & "Local"
where adding a local repository doesn't prompt for a URL.
- Support removing repositories and their files (uses confirmation
defaulting to "Cancel" to avoid accidents).
- Show an error icon next to repositories that have invalid settings,
these repositories are now ignored until the settings are corrected,
required fields are highlighted red when they're unset & required.
- Rename "directory" to "custom_directory" since an automatic path is
used when not set - created in the users scripts directory.
- Use toggles for custom-directory & remote URL instead of relying on
the value to be left an empty string for alternative behavior.
Bake items are generally identified by their (generated) identifier.
This allows changing the name and reordering sockets without breaking
baked data.
In the future we want to have some kind of Import Bake node that
ideally automatically creates its output sockets and names them correctly.
For that to work, the baked data has to contain the user-defined names
for each socket. Those names are not used yet.
Based on the design of #102585, This PR replaces the MOD_MASK icon with
the CLIP_UVDEHLT icon to better communicate the intent of masking across
many areas of Blender. It also changes the Grease Pencil `invert` icons
to avoid conflicts with the CLIPUV_DEHLT & CLIPUV_HLT.
Pull Request: https://projects.blender.org/blender/blender/pulls/117467
* For materials with UDIM tiles support, get array and mapping in one call
* For viewers that can use render results, add a dedicated function
* Fix potential use of render results in stencil overlay and grease pencil
Pull Request: https://projects.blender.org/blender/blender/pulls/117563
Additional icons for face corner, pointcloud points needed for general
usage. Unselected camera, view locked, and view unlocked for #111076.
Changes to mod_mask for #117467. pointcloud_data changed only for
alignment change. Running Update Icons also changed mod_explode.
Pull Request: https://projects.blender.org/blender/blender/pulls/117732
As currently implemented, Blender sometimes incorrectly sets active/render
UV maps during the "realize instances" operation. This also comes into play
if you try to modify the mesh with geonodes: e.g., if you use geonodes to
split a mesh into two pieces, transform one of them, and then "join geometry",
join operation internally performs "realize instances", triggering the same bug.
The root cause is that "realize instances" copies both UV map layers and the
active/render layer index, but it reorders layers during this process, so the index
that was correct in the original mesh is now wrong in the modified mesh.
This patch corrects indexes by explicitly checking layer names.
Pull Request: https://projects.blender.org/blender/blender/pulls/116452
`BKE_image_scale` -- which is only used for the python API -- was
getting the `ImBuf` without providing an `ImageUser`.
This is fine, but always gets the first tile (and the current frame for sequences).
To resolve this, add an optional "frame" & "tile_index" argument so these can be specified explicitly (similar to layer_index and pass_index already used for some other API functions).
Fixes#117539 : Scaling UDIM images via Image.scale() only scales one tile
Pull Request: https://projects.blender.org/blender/blender/pulls/117549
`GLBatch::draw_indirect` has additional overhead compared to
`GLBatch::draw`, and can become a bottleneck in scenes that require
many draw calls (ie. with too many unique meshes).
The performance difference is almost exclusively caused by the
`GL_COMMAND_BARRIER_BIT` barrier that happens on every call.
This PR adds a `GPU_storagebuf_sync_as_indirect_buffer` function that
can be used to place the barrier only once after filling the indirect
buffer content.
This function is a no-op in Vulkan and Metal since they don't need the
barrier.
Pull Request: https://projects.blender.org/blender/blender/pulls/117561
Caused by #113504
The `type` property has been removed from the operator,
but of course that is a breaking change in 4.1.
(e.g. reported here: #117547)
At the time of making the patch,
I wasn't sure how to handle all cases but it turns out its not complicated.
I've added back the property with the following logic.
* Try to get the `KeyingSet` from the `type`.
* `type` defaults to 0 which means the `ANIM_keyingset_get_from_enum_type`
will get it from the scene.
* If the scene doesn't have one, or a valid index isn't passed in the `KeyingSet`
will be a `nullptr` in which case it inserts from the user preferences.
Pull Request: https://projects.blender.org/blender/blender/pulls/117718
Some test cases are not support when used with the OpenGL backend. These
test cases are easier to support when using Vulkan as we do control the
GPU->CPU data conversion logic.
We remove the test cases that aren't working yet for any backend and
skip test cases where OpenGL support is failing.
Added support for static point instancing import.
Added a new USDPointInstancerReader class to import UsdGeomPointInstancer
primitives as Point Clouds with geometry node modifiers that use
Instance on Points geometry nodes to instance collections containing
prototype geometry.
Added logic to the USDStageReader class to traverse the USD stage to
create readers for point instancer prototypes.
Extended USDStageReader::collect_readers() to take arguments to include
undefined prims and to exclude a set of specified prims when traversing
the stage. Allowing traversing undefined prims is necessary because
prototype prims may be specified as "overs" in the USD stage.
Added a USDPrimReader::is_in_instancer_proto_ boolean flag which
identifies readers of prims that are in point instancer prototypes.
The flag simplifies management of collections and is used to
determine whether global transforms should be applied to root objects.
Limitation: point cloud animation is not yet supported.
This partially addresses https://projects.blender.org/blender/blender/issues/96747.
Co-authored-by: Michael Kowalski <makowalski@nvidia.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/113107