RNA update function called from `rna_property_override_apply_default`
does not have access to active `Scene`, so it is explicitly set to null.
Use `ptr->owner_id` instead of scene provided in argument.
Pull Request: https://projects.blender.org/blender/blender/pulls/129562
In March 2022 this was added as a provision to check/guard the build if
external folks were compiling without USD "Imaging" support [1]
In Feb 2023 code was added which ended up depending on "Imaging"
unconditionally (and probably more at this point) [2]
Since we haven't heard this being a problem so far, and because the USD
build option is enabled by default, let's just remove it.
The test which was added is also removed because the main import/export
code serves as the compile test, and the python test code serves as a
much more sufficient check of actual functionality.
[1] https://archive.blender.org/developer/D14456
[2] Commit `72a85d976a5781a21166356b24668b8c48d51690`
Pull Request: https://projects.blender.org/blender/blender/pulls/129733
Interpolating these attributes as integer values isn't meaningful or
helpful and is potentially problematic. So far I'd guess this is unlikely
to happen in practice which is why it probably hasn't been noticed yet.
Fixes part of #129691.
Pull Request: https://projects.blender.org/blender/blender/pulls/129809
Only retrieve a mutable copy of the attribute if we're actually able to change it.
If topology changes and there are no IDs, we can't mix the attribute and we
should avoid retrieving it in case it's shared. This is more of a hypothetical
change, I didn't actually observe a real world performance change.
Pull Request: https://projects.blender.org/blender/blender/pulls/129811
When using the Voxel Remesh operator, there are two possible sources of
crashes currently:
* TBB task stealing in nested parallel loops with thread local data
* Null dereference of PBVH data when pushing sculpt undo steps
To fix the former issue, this commit guards the
`threading::parallel_for` internal function with
`threading::isolate_task` to prevent possible task stealing and
corruption of the thread local data.
Additionally, it has the effect of fixing debug asserts inside
`array_utils::gather` due to the this task stealing.
To fix the latter issue, this commit adds a call to
`BKE_sculpt_update_object_for_edit` to ensure that this data is
populated.
Pull Request: https://projects.blender.org/blender/blender/pulls/129704
The issue is caused by the new way to compute the projection
matrix that tries to recreate it from view3d properties.
This is needed for proper overscan support.
However, this breaks for VR as the view3d is only partially
setup.
Skip the setup in VR and remove overscan for VR to avoid any
possible issues with it.
This fix avoid changing the behavior of the
`ED_view3d_draw_offscreen` which is exposed from our pyGPU
API. The pyGPU API is kind of broken if using custom
projection matrix + overscan, but that's a different issue.
Fix#125456
Pull Request: https://projects.blender.org/blender/blender/pulls/129813
Using array_utils::gather inside an already parallel context with TLS
variables has the possibility of causing data corruption due to task
stealing.
This commit changes them to the sculpt specific gather_mesh_data call
to avoid the nested parallel loop issue.
Pull Request: https://projects.blender.org/blender/blender/pulls/129770
Currently writing to the curve type attribute directly from Python
doesn't work because it doesn't tag the curve topology changed.
This is a limitation with the Python attribute API that needs to be
solved generally. In the meantime, this commit adds a `set_types`
RNA function. This will have better performance than writing to
the attribute directly anyway.
This is an alternative to #128410 that avoids tying the type to the
addition of curves.
Pull Request: https://projects.blender.org/blender/blender/pulls/129224
This was caused by uninitialized values at border. The correct
number of bricks were reserved but only the unpadded volume
was uploaded. Which was not touching the data of the border
bricks if the size was divisible by `IRRADIANCE_GRID_BRICK_SIZE - 1`.
Fix#127215
Pull Request: https://projects.blender.org/blender/blender/pulls/129810
Add an operator (`anim.debug_channel_list`) that lists animation channel
info in the terminal.
It's only available in debug builds of Blender, because it's a
developer-only tool. It is not available in a menu, just in the F3
search.
Pull Request: https://projects.blender.org/blender/blender/pulls/129804
In the Dope Sheet, show regular keyframes for GreasePencil object data.
The GPv3 transition missed a few cases in the animation
channel/filtering code to add the channels from regular Actions on
GreasePencil data blocks.
Pull Request: https://projects.blender.org/blender/blender/pulls/129807
First issue is that `BKE_modifiers_uses_armature` wasnt working for GP
objects and the second one is that vgroup names are stored in
CurvesGeometry for GP (so that needs special handling, now done, same as
in `BKE_object_defgroup_set_name`).
Pull Request: https://projects.blender.org/blender/blender/pulls/129794
Blender crashes when opening files that invokes the interactive
compositor on file load with a BadAccess X_GLXMakeCurrent error.
This is caused by the same system GPU context being active in two
threads at the same time, which happens when the GPU context for the
compositor is created in the main thread, it is made current during
creation, but it is not reset to the main GPU context of the drawable
because it is null. So when the GPU compositor actually executes, it
makes the GPU context current again but in its own thread, causing a
BadAccess error in X11 and potentially other window systems.
So the root cause is that the drawable is nullptr, and an attempt to fix
this was committed in 0a70360eb6 but was reverted in 98722773da because
it caused serious issue that were not obvious.
This patch attempts another fix by simply releasing the system GPU
context created when calling the RE_system_gpu_context_ensure. This is
more robust anyways because callers do not expect the context to be
bound form an API point of view.
Pull Request: https://projects.blender.org/blender/blender/pulls/129793
Curve maps in nodes like RGB Curves are not drawn nor evaluated outside
of clipping range. This is a regression in 8812be59a4, where the range
of the curve didn't account for points that lie outside of the clipping
range. That's because the table_range variable was initialized before
the loop that updates the minimum and maximum points of the table.
To fix this, we move the table_range initialization after the loop that
updates the minimum and maximum points of the table.
Pull Request: https://projects.blender.org/blender/blender/pulls/129777
Build modifier should start building strokes at a key frame, not always
assume a starting frame of 0.
Frame restriction works the same way as GPv2, which uses absolute
frame number.
Pull Request: https://projects.blender.org/blender/blender/pulls/129774
When grease pencil has no actions (ale->adt), id data block channel is
still added due to `ANIMFILTER_ANIMDATA`. This would lead to crash if
operator is accessing the AnimData (ale->adt). To fix this, make sure
adt exists before creating an animchannel.
Pull Request: https://projects.blender.org/blender/blender/pulls/128841
The 4x4 matrix type has a larger alignment requirement of 16 bytes
than the default, but it was stored in a generic vector of bytes. There
are a few solutions that reduce the memory reuse in this code path--
the chosen solution uses a custom allocator which always allocates
with an alignment that should be large enough for anything.
Generally I think this resampling loop could be rewritten to be a bit
simpler, avoiding these problems in the first place. Some performance
testing would show whether this "fancy" memory use between types
and loop structure is actually worth it. For now though, just correcting
the existing logic seems like the best choice.
Pull Request: https://projects.blender.org/blender/blender/pulls/129628
The input `md_eval` is invalidated when calling `BKE_scene_graph_update_for_newframe`.
The fix uses `BKE_modifier_get_original` to pass the original modifier
to `apply_grease_pencil_for_modifier_all_keyframes` then calls `BKE_modifier_get_evaluated`
after `BKE_scene_graph_update_for_newframe` to ensure the `md_eval` pointer is valid.
Pull Request: https://projects.blender.org/blender/blender/pulls/129732
Introduced in 1bc5c488d4
The value used in DNA_scene_defaults.h was out of sync with the actual
default startup value. In all currently supported and in development
versions (3.6 LTS, 4.2 LTS, 4.3, and 4.4), the `UNIFIED_PAINT_ALPHA`
bit value is set to false.
Pull Request: https://projects.blender.org/blender/blender/pulls/129711
This extends the `Vector` API to support transfering ownership of a memory
buffer to and from a `Vector`. This reduces the need for unnecessary copies in
some cases which converting between data-structures. A new
`VectorSet::extract_vector` method is added that takes O(1) time. Previously,
this was only possible in O(n) time by copying the entire array.
The `Vector::release` method can be used to e.g. build a vector with the C++
container, but then extract it for use in DNA data.
Pull Request: https://projects.blender.org/blender/blender/pulls/129736