The purpose of this node is to create a grid with new voxel values on
the same grid topology as an existing grid. The new values are the
result of field evaluation. Multiple grids can be created at the same
time, so that intermediate results used for multiple grids can be
efficiently reused during evaluation. This is more efficient than the
"Volume Cube" node, for instance, because the output grid shares the
sparseness of the input topology grid.
Pull Request: https://projects.blender.org/blender/blender/pulls/147074
Collection side is trivial, Object one is a bit more intricate, as
its LightLinking data behave similar to AnimData of IDs, which requires
a custom liboverride `apply` callback.
Pull Request: https://projects.blender.org/blender/blender/pulls/147039
The zone add operator necessarily has to add the input and output nodes
separately one at a time. After the first node is added a tree update is
executed, but the zone is incomplete and the runtime update will temporarily
remove all zones until the second node is added. Using zone lookup without
checking the pointer will crash in this state.
Pull Request: https://projects.blender.org/blender/blender/pulls/147131
The check for the essentials node group needs to be updated
to look into the library for node group that's now linked instead
of appended. Also fix missing redraws in the node editor with
a more specific notifier.
Pull Request: https://projects.blender.org/blender/blender/pulls/147130
This adds new icons for the remaining two modifier Essentials assets
bundled with Blender in the `Generate` category.
(`Curve to Tube` and `Scatter on Surface`)
Pull Request: https://projects.blender.org/blender/blender/pulls/147115
Ensure that function which requires evaluated depsgraph does get
such a depsgraph.
The BKE_scene_ensure_depsgraph() is not guaranteed to give evaluated
depsgraph, it only ensures that the depsgraph exists for the given
combination of bmain, scene, and view layer.
Pull Request: https://projects.blender.org/blender/blender/pulls/147111
In 113d91aba8 the mesh joining operator is
largely rewritten but the `join_positions_and_shape_keys` part didn't
supply valid `bmain` and `id` for `BKE_key_add` which leads to crash.
Now fixed by supplying correct arguments.
Pull Request: https://projects.blender.org/blender/blender/pulls/147101
Crash seems to happen due to parallelized access of data in liboverride
diffing code (presumably when a same linked data is used as reference
for several local liboverrides?).
Since there is zero reason to actually create IDGroup properties there
(it's actually fairly bad, also adding useless overhead and trash data
in system IDProperties), add a new API to access a Pointer PropertyRNA,
`RNA_property_pointer_get_never_create`, which ensures that the call
never creates data, and simply returns `PointerRNA_NULL` instead.
Also reverts abd683fcb5 and re-enable liboverride unittests.
NOTE: This only addresses the case from the report, the current behavior
of `RNA_property_pointer_get` is simply wrong and needs to be rethought.
This is not a simple change though most likely. See also #147072.
Pull Request: https://projects.blender.org/blender/blender/pulls/146990
The motivation is to keep backward compatibility after deprecating
`material.use_nodes()` and `world.use_nodes`. For example the
following script would behave the same way in 4.5 and 5.0:
```python
mat = bpy.data.materials.new("My new mat")
mat.use_nodes = True
```
Pull Request: https://projects.blender.org/blender/blender/pulls/147052
Functionality has been replaced by strip transform properties. Transform
strips in existing files will be replaced with gaussian blur with radius
of 0 to preserve modifiers and overall strip stack.
Pull Request: https://projects.blender.org/blender/blender/pulls/147003
Change the display name of `Float Vector` to `Vector` for the **Store Named Grid** node.
While this is specific for OpenVDB grids, elsewhere we only ever reference Vector for the
data type in the UI.
Pull Request: https://projects.blender.org/blender/blender/pulls/147051
Before this option existed, all menu sockets were drawn as if this setting was enabled.
This patch sets this flag by default for all menu sockets to avoid changing the drawing
of existing node group inputs.
Ref: #146939
Pull Request: https://projects.blender.org/blender/blender/pulls/147107
Check whether creating GPU textures succeeds before using them.
However, currently when that happens there is no indication to the user
that "hey the resolution is maybe too big". Not sure what is the best
way to do that however; e.g. Workbench rendering also does not
indicate that in a similar scenario.
While at it, add GPU_is_safe_texture_size instead of duplicating
the same logic in two places.
Pull Request: https://projects.blender.org/blender/blender/pulls/147043
The goal is to give more information to the user without having to open the
panel. Specifically, it's useful to know if there are any warnings/errors or
just info messages.
Pull Request: https://projects.blender.org/blender/blender/pulls/147103
Adds a Join Bundle node with a multi-input Bundle socket. Bundles are
iterated on the top level of each input bundle and items added to the resulting
single bundle. While creating the final bundle existing items have priority and
new items with an already existing name are discarded.
There is an info message when there are duplicate keys in the input bundles.
Co-authored-by: Brady Johnston
Co-authored-by: Jacques Lucke
Pull Request: https://projects.blender.org/blender/blender/pulls/146750
Calling SEQUENCER_OT_image_strip_add from Python attempted to
read a non-existent property "filepath" to check if the path was
relative. Use the "directory" for this instead.
The error occurred with the test file from #146433.
Ref !147100
The logic to copy custom normals checked for selection but didn't
account for the selection-history failing to initialize any
custom-normal loops.
Resolve by using the regular selection if the selection-history
cannot be used as a source for loop-normals.
Ref !147087
Flipping custom normals assumed BMLoopNorEditDataArray contained all
selected faces which isn't necessarily the case (when mixing modes and
using the selection history).
Resolve using selected faces for custom normal flipping operations,
ignoring the current selection mode.
Ref !147087
Similar to 327a1925cf
* Renames `strength_curve` to `curve_distance_falloff`
* Renames `curve_preset` to `curve_distance_falloff_preset`
These changes are done for consistency with the other concepts in the
other paint modes.
Pull Request: https://projects.blender.org/blender/blender/pulls/147071
Currently, attempting to split connected strips that are not both
selected means that only one of the strips are affected. This violates
the "connected" principle, so this PR makes the split operator propagate
the split to connected strips by default. Holding alt returns old
behavior (ignores connections), similar to selection logic.
Pull Request: https://projects.blender.org/blender/blender/pulls/146380
When a strip modifier uses an adjustment layer that is above it
as the mask input, this leads to recursive rendering. Similar to the
fix in !146624, pass SeqRenderState to modifiers as well.
Pull Request: https://projects.blender.org/blender/blender/pulls/147029
Frame variables in File Output paths are not replaced by the frame in
single renders. This is because the path construction function gets
passed false for frame usage to not force append frames, which also
handles frame replacement.
To fix this, we replace frame variables manually without forcing them
before constructing the path.
Pull Request: https://projects.blender.org/blender/blender/pulls/146779
The sequencer scene was set to the active scene in the window
in all cases. This is not great because we really only expect
the sequencer scene to be assigned when it was used.
The fix changes the versioning code to ensure that
1) The window has any VSE open.
2) The active scene uses an `Editing` struct (e.g. the user created
strips, or interacted in some way with the VSE).
This also changes back the test that checks for the usages
of IDs. Before this test had to include the workspace for
the default scene. Now this scene is no longer used
by the workspace, because the versioning that sets
the sequencer scene is no longer run.
Pull Request: https://projects.blender.org/blender/blender/pulls/147044
The changes:
1. Add `group_name` to the `channelbag.fcurves.new()` and
`action.fcurve_ensure_for_datablock()` RNA functions.
2. Add `anim_utils.action_ensure_channelbag_for_slot(action, slot)`.
3. Add `channelbag.fcurves.ensure()` RNA function.
This makes it possible to replace this legacy code:
```py
fcurve = action.fcurves.new("location", index=2, action_group="Name")
```
with this code:
```py
channelbag = action_ensure_channelbag_for_slot(action, action_slot)
fcurve = channelbag.fcurves.new("location", index=2, group_name="Name")
```
or replace this legacy code:
```py
fcurve = action.fcurves.find("location", index=2, action_group="Name")
if not fcurve:
fcurve = action.fcurves.new("location", index=2, action_group="Name")
```
with this code:
```py
channelbag = action_ensure_channelbag_for_slot(action, action_slot)
fcurve = channelbag.fcurves.ensure("location", index=2, group_name="Name")
```
Note that the parameter name is different (`action_group` became
`group_name`). This clarifies that this is the name of the group, and
not a reference to the group itself.
This is part of #146586
Pull Request: https://projects.blender.org/blender/blender/pulls/146977
This is caused by the forward_lib including eevee_nodetree_lib
before eevee_ambient_occlusion_lib.
Fixed by splitting eevee_nodetree_lib into the part that is
needed for forward_lib so that eevee_nodetree_lib is only
included from eevee_nodetree_frag_lib and eevee_nodetree_vert_lib.
Pull Request: https://projects.blender.org/blender/blender/pulls/146987
The issue was that the used operator just took the active node into account.
However, clicking in empty space does not make the active node inactive.
Therefore, sometimes clicking on empty space would sometimes remove enter the
last selected group node. Furthermore, double clicking on other nodes may also
trigger exiting the current group.
This is fixed by introducing a new operator that explicitly checks what node is
hovered.
Pull Request: https://projects.blender.org/blender/blender/pulls/147053
This PR introduces grouping of the unit tests inside debug groups.
Previously a capture would contain a single test. But for performance
reasons multiple tests are run in a single process, making it unclear
which commands belong to which test.
This PR will add a debug group for each test that is run.
Pull Request: https://projects.blender.org/blender/blender/pulls/147046
Step by step debugging of unit tests inside renderdoc didn't work as the
debug information wasn't included when running unit tests. This should
have been the case, but was broken when introducing
`--debug_gpu_compile_shaders` startup parameter.
Pull Request: https://projects.blender.org/blender/blender/pulls/147040
Currently, the compositor template ID creates a new node tree. This is
inconsistent with other node editors where the button copies the node
tree.
Also use "New" in geometry nodes operator description instead of "Copy"
Pull Request: https://projects.blender.org/blender/blender/pulls/146222
This patch makes a distinction between passes accessed through nodes
like the Render Layers node, and inputs accessed through nodes like the
Group Input node. Previously, the Group Input node returned the passes
of the active scene and view layer accordingly to the name, while now,
it only returns the Image (Combined) pass and the result will be zeros.
Pull Request: https://projects.blender.org/blender/blender/pulls/146831
The Node Wrangler addon has a _Reset Nodes_ operator that can remove the input
node of a node zone. This crashes in reference set updates because the code
expects valid input/output node pairs in each zone.
The fix is two-fold:
1. Finding zones for the runtime now returns an empty result to ensure no
invalid node pointers are being accessed. This should not happen in practice,
all operators should make sure zone relationships are not broken.
2. The node wrangler addon is updated to ignore all zone types, including the
newer repeat, closure, and for-each-element zones. The type filtering was
outdated and now uses the `bl_idname` consistently.
Pull Request: https://projects.blender.org/blender/blender/pulls/147028