The filter for grease pencil objects wasn't showing up.
The code was still checking for the legacy type.
Now, we're checking for the right object type and
are also looking at the `bpy.data.grease_pencils_v3`
list to make the checkbox show up in the UI.
The code has nullptr checks to make sure it doesn't try to use freed or unitiallized variables.
However the when freeing the data, the code doesn't assign the pointer to be null.
Now set them to be null
Pull Request: https://projects.blender.org/blender/blender/pulls/125090
When the Baklava experimental flag was disabled, attempting to insert
a key on a layered action would erroneously use the legacy action key
insertion code path. This was simply due to the condition for which
code path to use being incorrect.
This commit fixes that condition.
Pull Request: https://projects.blender.org/blender/blender/pulls/125055
This allows much easier debugging of shader programs.
Usage is as simple as adding `printf` calls inside shaders.
example: `printf("Formating %d\n", my_var);`
Contrary to the `drw_print`, this is not limited
to draw manager shader dispatch/draws. It is compatible
with any shader inside blender.
Most notably, this doesn't need a viewport to display.
So this can be used to debug render pipeline.
Data formating is currently limited to only `%x`, `%d`,
`%u` and `%f`. This could be easily extended if this is
really needed.
There is no type checking, so values are directly reinterpreted
as specified by the printf format.
The current approach for making this work is to bind a
storage buffer inside `GPU_shader_bind`, making it
available to any shader that needs it. The storage buffer
is downloaded back to CPU after a frame or a render
step and the content printed to the console.
This scheduling means that you cannot rely on these printfs
to detect crashes. We could add a mode to force flushing
at shader binding to avoid this limitation.
The values are written from the shaders in binary form and
only formated on the CPU. This avoid issues with manual
printing like with `drw_print`.
Pull Request: https://projects.blender.org/blender/blender/pulls/125071
Two issues:
- The `AS_asset_libraries_available()` function would always return
true, because `AssetLibraryService::get()` would actually allocate the
service if not available.
- The issue would still happen if another code path would call
`AssetLibraryService::get()` after the service was destroyed, and
before the UI data was destroyed. This was happening now, so the crash
was back, see #124167.
I'm working on a new fix, for now, remove this broken one.
With 2.7x keymap, clicking on selected strips does not de-select others.
Seems to be caused by leftover code, when some selection functionality
was moved to `SEQUENCER_OT_select_handle`
Pull Request: https://projects.blender.org/blender/blender/pulls/124779
Caused by fe0e2907b3
Prior to that commit, adding palette colors was only working because
`BKE_paintmode_get_active_from_context` was falling through to
`PaintMode::Texture2D` which then would do its thing in
`palette_color_add_exec`
To resolve, now respect `PaintMode::GPencil` as well there.
Pull Request: https://projects.blender.org/blender/blender/pulls/125062
This got superseeded by the "super knife" in 421823e34e 14 years ago
it seems, it cannot be executed atm. (and even if reactivated, it
crashes in multiple places).
Stumbled over this while checking on usages of
#BM_custom_loop_normals_to_vector_layer /
#BM_custom_loop_normals_from_vector_layer (to add this to more tools),
and apparently this outdated piece of code got an update in 93c8955a72
:) -- work on adding this to our "real" Knife is upcoming in another
PR...
Pull Request: https://projects.blender.org/blender/blender/pulls/124970
Node trees have to be updated after remapping IDs in the node tree. This will,
among other things, create/delete sockets on group nodes. Furthermore, this also
tags the depsgraph so that objects that (indirectly) depend on the node group
output are reevaluated.
The tagging of node trees to update already happens in
`foreach_libblock_remap_callback_apply` for a while, the issue is that the
actual propagation of tagged changes does not happen currently.
I was checking this because Simon ran into some bug after deleting libraries. He
couldn't reproduce it anymore, but my best guess right now is that it is caused
by a missing update.
Pull Request: https://projects.blender.org/blender/blender/pulls/124980
Properties category icons with new SVG icons are slightly brighter than
before, and therefore do not seem to brighten on hover. This PR makes
them match exactly. Was assigning an alpha instead of multiplying. And
an earlier refactor for outlines made these icons not show initially
dimmer unless there is also an outline.
Pull Request: https://projects.blender.org/blender/blender/pulls/125029
This reverts #124938 & #124827, leaving File Browser as it was before,
without any extra ED_fileselect_set_params_from_userdef to ensure that
the previous_dir is populated with current directory. I have not found
a place to ensure this history is correct (when File Browser is part of
the layout) that does not cause unintended consequences. Will mark the
original bug report, #124771, as unresolved.
Pull Request: https://projects.blender.org/blender/blender/pulls/125019
Fairly trivial conversion, since there is no complex handling of
dependencies currently in that case.
NOTE: Also fixes the 'not copying any material' issue also present in
4.2 (at least), but the proper way. For reference, see !125003 for a fix
for code using the deprecated partial write API.
Part of #118145.
The `flood_fill` functions are used for a number of different remaining
brushes and tools. It is unlikely that this particular implementation
is the most efficient way to solve the problems that the different
brushes pose, but further refactors to improve performance should
happen in future commits. For now this is a temporary solution to
remove usage of `PBVHVertRef` and related macros.
Pull Request: https://projects.blender.org/blender/blender/pulls/124830
Add F-Curve management functions on ChannelBags
(`channelbag.fcurves.xxx`) that are very similar to the legacy Action
functions `Action.fcurves.xxx`.
```python
channelbag = strip.channelbags.new(slot)
fcurve = channelbag.fcurves.new("rotation_quaternion", index=1)
assert channelbag.fcurves[0] == fcurve
channelbag.fcurves.remove(fcurve)
channelbag.fcurves.clear()
```
Pull Request: https://projects.blender.org/blender/blender/pulls/124987
To account for rounded corners, the meta/scene strip contents were
drawn with a horizontal margin on both strip sides. However this is
confusing and misleading, since it can look like the contents have
a frame gap between content start and parent strip start.
Instead, add vertical margins which do not have a possibility of
confusion with frame gaps.
Pull Request: https://projects.blender.org/blender/blender/pulls/124965
Add an explicit mask in `IDAddOperations` for flags that are inherited
by default for dependencies of explicitely added data.
And refactor handling of per-id-usage flags returned by the
`dependencies_filter_cb` callback to also have a mask value defined in
`IDAddOperations`, as this is clearer and easier to maintain than a
constexpr hiddin in implementation code.
Semantically this is where those methods belong anyway, and it's needed
for upcoming work on the RNA API.
This also adds a method `KeyframeStrip::channelbag_for_slot_ensure()` to
make some of the things that used to be done with
`KeyframeStrip::fcurve_find_or_create()` less inconvenient in the face
of the latter moving to `ChannelBag::fcurve_find_or_create()`.
Pull Request: https://projects.blender.org/blender/blender/pulls/124973
This commit changes the keying code to deselect keyframes when inserting new keys.
This has been discussed in the Animation & Rigging module meeting [1].
There is also an RCS post about that [2].
Doing this brings key creation in line with object creation,
where only the newly created object is selected.
There has been a previous attempt [3] to do a similar thing.
### Changes
When inserting keys by pressing `I` in the viewport or choosing a keying set,
all keys of the `Action` get deselected before inserting new keys.
New keys are selected by default.
Python RNA functions are **NOT** affected, meaning addons using
those functions will not deselect any keys by default.
The developer has to choose to do so.
To make that easier, there is a new RNA function on the action
`deselect_keys`
[1]: https://devtalk.blender.org/t/2024-05-02-animation-rigging-module-meeting/34493#patches-review-decision-time-5
[2]: https://blender.community/c/rightclickselect/K0hbbc
[3]: https://archive.blender.org/developer/D11623
Pull Request: https://projects.blender.org/blender/blender/pulls/121908
This is due to uninitialized `curve_strength` table. It is either
initialized for active tool or the eraser (if ctrl is held). So fix is
to choose correct brush in execute() function.
Also fix the inverted condition in begin() function to choose
eraser brush.
Pull Request: https://projects.blender.org/blender/blender/pulls/124975
This is used by ID copy/paste code to detect which IDs from a copy/paste
buffer can be used as paste source.
Also slightly refactor implementation to handle both fake/extra ID user,
and clipboard mark in the same utils function.
RNA API for creating & removing channelbags, as well as a path function
to construct RNA paths for channelbags.
```python
action = bpy.data.actions.new('TestAction')
slot = action.slots.new()
slot.name = 'OBTest'
layer = action.layers.new(name="Layer")
strip = layer.strips.new(type='KEYFRAME')
# New in this commit:
channelbag = strip.channelbags.new(slot)
strip.channelbags.remove(channelbag)
```
Pull Request: https://projects.blender.org/blender/blender/pulls/124793
This was changed in [0] & [1] when replacing `float[3]` with `float3`.
However copying by value wasn't needed for the fix.
[0]: 7249b78b6b
[1]: efd3c4b3c9
Improvements to Area maintenance, adding the ability to move and dock
areas to any location, including between multiple windows. Allows
transitioning between splitting, joining, moving, and docking without
early commit. Improved visual feedback. Design Doc #124915. Added
as experiment feature.
Pull Request: https://projects.blender.org/blender/blender/pulls/123414
Fix#124827 for Bug #124771 adds a call in fileselect_refresh_params to
ED_fileselect_set_params_from_userdef. But fileselect_refresh_params is
not just called from file_init but also file_refresh, which is far too
often and keeps some options from being selected. This moves
ED_fileselect_set_params_from_userdef directly to file_init.
Pull Request: https://projects.blender.org/blender/blender/pulls/124938
A rename of the icon type ICON_TYPE_MONO_TEXTURE to ICON_TYPE_SVG_MONO
to better reflect the underlying function. This new name makes a nice
matched set with new ICON_TYPE_SVG_COLOR used for SVG in full color.
Pull Request: https://projects.blender.org/blender/blender/pulls/123957
If File Browser is opened while embedded into a blender window, as
apposed to opened in a new window, some initialization is not done
and the current directory is not added to the list of previous
folders. Therefore the "back" button cannot bring you back to the
initial folder. This happens if your layout contains a File Browser
editor, like when selecting New / Video Editing. This PR just adds
`ED_fileselect_set_params_from_userdef` to `fileselect_refresh_params`,
which is called from `file_init()`.
Pull Request: https://projects.blender.org/blender/blender/pulls/124827
`DUPLICATE_DEPENDENCIES` was wrongly used instead of `ADD_DEPENDENCIES`,
the former should be considered a non-modifiable option for a whole
'add' operation. But the per-ID-usage callback should be able to force a
dependency to be added or cleared.
somehow the compiler is struggling with `default:` in `switch`, even if
it's never reached.
This fixes the discrepancy in the `principled emission alpha` test.
Pull Request: https://projects.blender.org/blender/blender/pulls/124889
Fixes Overlay-Next selection when multiple objects are hit.
To reproduce:
- enable "Ovlay Next" in Preferences>Experimental
- create any Empty object and duplicate it without moving
- try to select by clicking them
Crash occurs because `mixed_bones_object_selectbuffer` in `view3d_select.cc` expects that `view3d_opengl_select_ex` will append results to `buffer`. Depending on situation after several `view3d_opengl_select_ex`calls with decreasing radius it tries to `slice` results from buffer:
```c
has_bones9 = selectbuffer_has_bones(storage.as_span().slice(ofs, hits9));
```
Pull Request: https://projects.blender.org/blender/blender/pulls/124154
Improving performance as hashing the fragment shader was visible
in performance analysis. This PR calculates the hash once and stores
it inside the struct for quick access.
Pull Request: https://projects.blender.org/blender/blender/pulls/124882