Menus listing assets (which the search menu covers) rely on notifiers to
know when their chached asset catalog tree is invalid and needs
rebuilding. The 3D view notifier listener would not check for the
notifier that is sent when the asset storage was cleared after a file
save.
Pull Request: https://projects.blender.org/blender/blender/pulls/145583
The Movie Distortion node produces artifacts when used with half
precision context. This is because distortion grids require full
precision for high quality results, which this patch does.
Pull Request: https://projects.blender.org/blender/blender/pulls/145640
Some FBX files contain somewhat incorrect relative paths for their
material textures. The old Python importer was "working" only as a side
effect that it was exhaustively searching the subfolder hierarchy.
Try to do a smaller version of that here too: if referenced image
is still not found after trying the regular relative/absolute paths,
try taking longer path parent chains from the absolute path coming
from FBX file, and using that as relative path wrt the FBX file itself.
Pull Request: https://projects.blender.org/blender/blender/pulls/145641
Resolve regression in [0] where name was translated for the name but
not the Python expressions, it's possible to translate both but this
doesn't seem so simple as these functions don't necessarily run at
the same time.
[0]: 6926596174
Checker deselect on circular vertex selections or loops produced
irregular patterns instead of a consistent checker pattern.
Resolve by handling cyclic chains as a special case.
Ref !145465
* Moves the paint cursor pointer to `PaintRuntime`
* Removed the stored runtime color value - this was effectively
hardcoded to a shade of red (255, 100, 100) with an alpha of 128.
The red color was only used for the smooth stroke overlay (the trailing
line) and the alpha value was only ever used for the *Line* stroke type.
Pull Request: https://projects.blender.org/blender/blender/pulls/145371
This commit adds support for users to customize individual pressure
mapping curves for size, strength, and position jitter on a per-brush
basis to improve expression when using drawing tablets. This feature is
already implemented in Grease Pencil, and this PR adds the same
functionality to Texture/Image paint, Vertex/Weight paint, and Sculpt
modes.
The UI and functionality are the same as those in Grease Pencil.
Co-authored-by: Sean Kim <SeanCTKim@protonmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/144428
Build the size for each curve in parallel, then accumulate the sizes
to offsets afterwards. This way it's easy to parallel. Also only count
custom knots for NURBS.
Pull Request: https://projects.blender.org/blender/blender/pulls/145581
The prior change missed that `UvSculpt` brushes have their own isolated
`size` value stored at the `ToolSetting` level and not stored as either
brush assets or on the `UnifiedPaintSettings` struct
Similar to #139813
Pull Request: https://projects.blender.org/blender/blender/pulls/144837
Up until now, when encountering an OpenXR error / exception in debug
mode, only the raw OpenXR error enum int value would be displayed, which
wasn't really descriptive nor useful. To remedy this, this commit adds
an `xrResultToString` call to additionally convert this value into its
corresponding enum string.
See PR for an example error print.
Pull Request: https://projects.blender.org/blender/blender/pulls/142582
In the vertical list display mode, if only the top part of a file was
scrolled into view, the file wouldn't actually draw. So while scrolling
down the list, the last item would visibly pop up. This wasn't intended,
not drawing these items is just an optimization.
Issue was the offset for the table header (reading something like "Name
| Modified | Size") wasn't accounted for.
Instead of just disabling the cyclic bit of the flag, the code
reset the whole flag to -2 which doesn't really make sense.
It cause a problem because the "custom knots" bit was set
but there weren't any allocated custom knots.
Pull Request: https://projects.blender.org/blender/blender/pulls/145580
Somehow the file in this report ended up with a node pointer that
disagreed with the socket pointer. Since we use the latter for drawing,
that's a better source of truth. This commit adds a versioning step
that corrects the node pointer. If this happens again we may need
to run the versioning again at some point, but that's not clear.
Pull Request: https://projects.blender.org/blender/blender/pulls/145409
Use AncestorPointerRNA to detect when property groups from an add-on
or key-map preference are edited so the preferences are marked as dirty
and saved on exit.
Add back custom properties to nodes, and properly expose them in the UI
as such (new 'Custom Properties' panel for nodes in the the Node
Editor).
This shows like any other custom property panel in the UI, in the Node editor:
<img width="424" alt="image.png" src="attachments/adb50815-0db0-447f-ac3b-7860d9a3e3fc">
Although not initially intended for this, nodes 'mixed' IDProperties
were quite widely used by py/extensions developers to store per-node
data.
During the initial IDProperties split between User-defined (aka custom
data) and system-defined (runtime RNA properties), this was not known,
so decision was made to only keep system properties for Nodes. The fact
that these properties were not exposed at all in UI also played a role
in that decision. See also discussions in #141042.
This commit instead splits system properties out into their own new
storage, and keep existing ones for user-defined/custom properties
(as done for other IDProperty owners, like IDs, bones, etc.).
Pull Request: https://projects.blender.org/blender/blender/pulls/145424
This uses a special delayed extraction code path that is not used by
any other drawing code. Ensure we have the subdivided mesh when GPU
subdivision is off similar to the other code paths.
Pull Request: https://projects.blender.org/blender/blender/pulls/145268
The Embree scene contains a TBB task group that has a parent pointer to the
task group it was created in. In Cycles this task group was only temporarily
created on the stack, resulting in a dangling parent pointer.
The simple solution is to make the Cycles side task group persistent too.
Many thanks to Aras for figuring this one out, this was a very tricky one.
Pull Request: https://projects.blender.org/blender/blender/pulls/145515
Regression from today's heavy get/set refactor commit (469f54f484).
Unclear however if this `RNA_property_string_set` function is expected
to accept nullptr value, as reading code before the breaking commit, it
seems like it would call `strlen` or `BLI_strncpy` on a nullptr then,
which should also fail dramatically?
Improve handling of runtime defined python RNA properties. Mainly:
* Add `get_transform` and `set_transform` new callbacks.
These allow to edit the value, while still using the default
(IDProperty-based) storage system.
* Read-only properties should now be defined using a new `options` flag,
`READ_ONLY`.
* `get`/`set` should only be used when storing data outside of the
default system now.
* Having a `get` without a `set` defined forces property to be
read-only (same behavior as before).
* Having a `set` without a `get` is now an error.
* Just like with existing `get/set` callbacks, `get_/set_transform`
callbacks must always generate values matching the constraints defined
by their `bpy.props` property definition (same type, within required
range, same dimensions/sizes for the `Vector` properties, etc.).
* To simplify handling of non-statically sized strings, the relevant
RNA API has been modified, to use `std::string` instead of
(allocated) char arrays.
Relevant unittests and benchmarking have been added or updated as part
of this project.
Note: From initial benchmarking, 'transform' versions of get/set are
several times faster than 'real' get/set.
Implements #141042.
Pull Request: https://projects.blender.org/blender/blender/pulls/141303
Maintenance4 contains the maxBufferSize property that contains the
maximum allowed buffer allocation.
This PR uses this property to precheck if allocations will fail. It
was an attempt to improve the reliability of failing allocations but
currently they fail at the driver side.
Pull Request: https://projects.blender.org/blender/blender/pulls/145555
No functional changes intended.
This removes the unused function `UI_view2d_draw_scale_y__block`
and renames the functions that are `static` to follow the conventions.
Pull Request: https://projects.blender.org/blender/blender/pulls/145342
This node is really just a function node. The main thing that's somewhat special about
it is the implicit input for the id, but that's supported for function nodes.
Pull Request: https://projects.blender.org/blender/blender/pulls/145549
Raytracing pipeline in EEVEE interpolates in time for better results.
But depending on the interpolation could try to load a sample that isn't
available.
This PR fixies this for planar probes and screen tracing. In screen
tracing the issue wasn't visible as it the background samples are
always cleared.
This has an expected performance penalty but it could require an
overhaul of EEVEE raytracing for a more efficient solution.
Pull Request: https://projects.blender.org/blender/blender/pulls/145508