The default wasn't in the list of static enum items which means the
value was reset to 0 instead of the proper default. Even though the
list is dynamically generated, the possible enum items should be
part of the static list anyway.
The property actually had a default, but defined via
`RNA_def_property_float_default` [**RNA** defaults handle highlevel (UI)
stuff like "Reset to Default", but is not in effect when creating new
data/editors].
For this to work, we now define the default in **DNA**
(Also corrects the mismatch in value in this particular case)
NOTE: other editors also handle "defaults" in `SpaceLink` creation functions
in their respective space_XXX.cc files, so that is another system to look at.
NOTE: there might be many more cases that could benefit from moving the
default from RNA (or `SpaceLink` creation functions) to DNA, or possibly even
doing this via other alternatives like supporting C++ in-class member initializers
in makesdna, goal is the same: having a single "source of truth".
But going over these will be for another time...
Pull Request: https://projects.blender.org/blender/blender/pulls/131735
Pass the session UID to the identity comparison callback directly,
instead of passing the ID pointer and accessing the session UID inside
the function. This way the dangling ID pointer is avoided.
Makes use of the support for passing named integers via context, which
was added in the previous commit.
Pull Request: https://projects.blender.org/blender/blender/pulls/131676
Similar to 2fbf206491, but for integers (not strings). Essentially this
allows passing named integer values through UI abstractions in a clean
way.
I used 64 bit integers here, since space isn't an issue here, and it
fits common integer types (so we don't have to add APIs for multiple
integer types).
Planned to be used to fix#111463 (following commit).
The Keying node leaks memory when only the edges output is used. That's
because tweaked matte is computed in that case, but is never used nor
released because the other two outputs are not needed. To fix this,
release the tweaked matte if it is not used.
The GPU and new CPU compositors leak memory when an output is connected
to multiple inputs inside the same pixel operation. That's because nodes
do not know that their multiple outgoing links are in fact going to the
same operation, so their initial reference count is more than the actual
reference count.
To fix this, we keep track of the reference count of pixel operation
inputs and release the inputs based on that reference count.
Currently the realize instances code (which is also used by the join
geometry node) always creates generic attributes instead of vertex
groups. The expectation was that vertex groups would be replaced
by some form of generic attribute sooner rather than later. However,
it's clear that won't happen for some time, and this issue causes users
a lot of trouble. This commit preserves the vertex groups through the
operation. Any attribute name that was a vertex group on any of the
input meshes will become a vertex group in the result.
In the code this is a simple change because the attribute writer
abstraction allows writing to vertex groups as if the were just like
other contiguous arrays. In the future we could optimize the code
specifically for vertex groups.
This resolves the "bug" part of #99197 where the nodes remove vertex
groups. However, this doesn't change the fact that generating
primitive meshes in geometry nodes won't create vertex groups.
In general the property editor settings on the original mesh have
no effect on meshes created from scratch in geometry nodes.
Pull Request: https://projects.blender.org/blender/blender/pulls/131692
`.release()` is technically fine but semantically wrong here. First,
release is meant to take ownership from the unique_ptr, meaning
at best it's "weird" to not do anything with the pointer afterwards.
Second, the runtime struct with the unique_ptr was just default
constructed, which means the unique_ptr will be empty anyway.
When pressing Tab to move to the next input in the same block (and
Alt-Tab to move backward), we currently skip buttons that have the
UI_BUT_DISABLED flag. This PR makes these operations also skip buttons
that have UI_HIDDEN. This makes tabbing work better in places like the
color picker where we show/hide the RGB and HSV buttons depending on
mode.
Pull Request: https://projects.blender.org/blender/blender/pulls/131698
The tooltip used to say that the center is always the objects origin.
However, in the case of text-boxes, it's actually the center of the text box.
There might be valid use-cases to move the text box center to the
object's center, but it seems like the same can be achieved with offsets.
Also that would be a new feature that's out of scope of a bug report.
Pull Request: https://projects.blender.org/blender/blender/pulls/131693
Changing Icon Alpha in Preferences / Themes / User Interface / Styles /
Icon Alpha is meant to change the opacity of the UI icons. It should not
change the opacity of the previews of Matcaps and Studio lights as this
changes the color because of mixing with the background. This PR just
skips this icon type when changing the alpha for this preference.
Pull Request: https://projects.blender.org/blender/blender/pulls/131690
This avoids assuming that `BKE_ntree_update_main` has run on a node tree before
the depsgraph is build. The update code already finds the dependencies to
determine if a relations update is necessary or not. To avoid detecting these
dependencies again (which requires iterating over all the nested nodes), they
were cached on the node group so that they can be used when the depsgraph is
build.
However, since the update code does not run in all necessary cases yet
(#131598), this does not work currently. This patch fixes the situation by
removing the optimization of not having to find all dependencies again when the
depsgraph is build.
This optimization can be introduced again after we can be more sure that the
node tree update code runs whenever the node tree changes (which is what #131665
tries, but requires more discussion).
Pull Request: https://projects.blender.org/blender/blender/pulls/131685
This improves the `write_libraries` function in a couple of ways:
* No need to split the `bmain` which I find somewhat hard to reason about. I
think it's good if `bmain` is as read-only as possible in this write-context.
Instead a more explicit C++ data structure (`MultiValueMap<Library *, ID *>`)
is used. I think this was the only place in write-code that used
`blo_split_main`.
* Deduplication of the check that determines whether a placeholder should be
written for a specific ID.
* General cleanup to avoid unnecessarily deep nesting when iterating over IDs.
No functional changes are expected.
Pull Request: https://projects.blender.org/blender/blender/pulls/131385
Use the same workaround as for render.
Wrap the sync inside its own `custom_pipeline_wrapper` so that
we don't freeze the main thread when waiting for these 50ms.
Also remove the `manager->begin_sync()` and `manager->end_sync()`
as they are already present inside `render_sync`.
Pull Request: https://projects.blender.org/blender/blender/pulls/131678
There could be strokes that have zero lengths (a dot), in this case a
NaN factor was given to the final build function, leading to invalid
index when accessing arrays. Now `get_stroke_factor` will return either
0.0f or 1.0f (depending on input factor) when stroke has zero total
length.
Pull Request: https://projects.blender.org/blender/blender/pulls/131683
NVIDIA driver before 550 doesn't work as expected on Linux. The issue is
known on the internet, but no real solutions are provided.
This change will limit the block list of older driver to the Linux
platform only. It has been reported that Windows these driver are
working and would enable older GPUs to work on Windows.
Ref #129160
Pull Request: https://projects.blender.org/blender/blender/pulls/131674
This patch optimizes the constant bokeh blur CPU implementation by
pre-computing the blur kernel from the bokeh kernel, and thus avoid
interpolation in the blur loop. Gives a 2x improvement.