Conceptually, these are the same as IDProps used for regular dynamic RNA
data (should have been done that way from the beginning). At least make
them statically typed, to avoid all kind of issues when the IDProp type
change and does not match expectations from the geometry nodes anymore.
Ref. #122743.
Pull Request: https://projects.blender.org/blender/blender/pulls/122891
All IDProperties generated as part of 'storage backend' for dynamic RNA
properties are now statically typed.
Also adds some basic unittests for the new statically typed IDProperty
system, based on py-defined RNA data.
Ref. #122743.
This implements (most of) the proposal in #122743:
* Add a new `IDP_FLAG_STATIC_TYPE` IDProperty flag.
* Update `BPy_IDProperty_Map_ValidateAndCreate` and related to never
change an existing property type if statically typed.
The biggest change happens in bpy assignement code, since instead of
replacing the old exisitng property by a newly created one, and copying
over a few settings, now the old property is kept if possible, and a new
one is only created if needed.
And in case the existing property is statically typed, if it cannot be
re-used to store the given value, and error is reported and it remains
unchanged.
`IDP_ARRAY` is also supported for basic numeric types, so 'vector'
properties and such work as expected. Lentgh is considered as part of
the static type (i.e. one can only assign a 3 components py sequence to
a 3-len array property, etc.).
Such in-place update is not yet implemented for `IDP_IDPARRAY` and
`IDP_GROUP` types. While important (especially the group one), they are
not that critical for the current issues related to changing IDProperty
types.
The hidden socket in the Viewer is not shown when a new link to it is created.
This is because the hidden property of the socket is not updated when a new
link to it is created.
Fixing it by simply manually update the property after a new link is created.
Pull Request: https://projects.blender.org/blender/blender/pulls/120503
This could happen for non manifold meshes (like a water plane)
when using the accurate method.
If last hit in the volume ray is a frontface, we now consider
everything behind it in volume.
I didn't think the BMesh extraction mode could arrive at the case where
only loose edges are requested, but turns out it can because of the
mesh wrapper system where the evaluated mesh is actually a BMesh with
deformed positions.
Related to #119999 and #122059.
In case the _source_ PropertyRNA was unset (i.e. its underlying
IDProperty storage did not exist), the copy operation would silently
fail.
In fact, the existing code handling IDProperties separately in
`RNA_property_copy` was pretty bad, since it would also bypass all the
RNA 'setting value' code (like custom setters, update handling).
Turns out, liboverride RNA apply code can already handle all of these
cases, so simply pass the raw 'unresolved' RNA property to it, and
remove all this special handling code from `RNA_property_copy`, solves
all the issues.
Extract
- Cycles denoiser enum.
- Extensions user preferences UI.
- Node operator poll message from new node function.
Improve
- Split "(Enabled|Disabled) on startup, overriding the preference."
into two messages.
Disambiguate
- "Add" when describing the action of adding something should use the
Operator context.
- "Dimensions", in noise textures.
- "Transform" as a noun, the matrix transform type of Geometry Nodes,
as opposed to the verb to move things in space.
- "Parent" as a noun or verb (the parent of an object, to parent an
object to another).
Some issues reported by Satoshi Yamasaki, deathblood, and Gabriel Gazzán.
Pull Request: https://projects.blender.org/blender/blender/pulls/122969
Masks are not updated when edited when using the GPU compositor. That's
because the GPU compositor caches static resources and invalidates them
according to the recalculate flags that the depsgraph flushes to IDs.
The issue is that the flags are not flushed to the evaluated IDs of the
compositor depsgraph, but rather to some other evaluated versions of the
IDs.
To fix this, we make the compositor depsgraph persistent and store it in
the scene runtime. This allows us to reliably track changes to resources
used by the compositor and also reduces the overhead of depsgraph
creation in the compositor job.
Patch originally provided by Sergey.
Fixes#121188.
Pull Request: https://projects.blender.org/blender/blender/pulls/123085
Fixing a bug which was causing forward-slash separators in
skeleton joint paths to be replaced with underscores, resulting in
invalid skeletons.
This was inadevertantly introduced in 9ad2c7df0b. I should
have caught this when I reviewed #122471.
Pull Request: https://projects.blender.org/blender/blender/pulls/123031
This is kind of wrong fix from the perspective of properly maintaining dependencies
of static libraries, but having cyclic dependencies and whole-archive for the test suit
makes it very hard to do things properly.
Pull Request: https://projects.blender.org/blender/blender/pulls/123123
Render border is stored either in the current View3D data (UI data, not
undoable), or in Scene's render data when in camera view (only undoable
case).
This commit removes the `UNDO` flag of the related operators, and
instead manually pushes an undo step when executed in camera view.
Pull Request: https://projects.blender.org/blender/blender/pulls/122767
The VSE timeline strip thumbnail code seems to have at least two issues:
Sometimes the thumbnail would go 1px outside of the right side of the strip
itself. This seems to be caused by floating point inaccuracy where current
thumbnail position is tracked in "fractional timeline frames" instead of some
integers like pixels. The last, often clipped, thumbnail would thus spill over
outside of the strip. Fixed this by making sure the last pixel column of the
strip is not included into thumbnail drawing (pointless to draw there since it
is always covered by strip border).
Another problem was that the first thumbnail of the strip was often incorrectly
clipped and the last pixel from it was removed, and so it was leaving a pixel
gap between first and other thumbnails. This was under "Set the clipping bound
to show the left handle moving" comment, where due to inclusive range check it
was always causing the "clipped" part to be set to true for the first thumb.
Also while trying to untangle all of this, moved variables closer to their
usage. Some of them were only used inside the thumb loop but were declared in
whole function (probably coming from when it was C code).
Pull Request: https://projects.blender.org/blender/blender/pulls/123119
7413031dd6 introduced an error and related warning when generating Py API docs:
```
/blender/doc/python_api/sphinx-in/bpy.app.translations.rst:132: ERROR: Unexpected indentation.
...
/blender/doc/python_api/sphinx-in/bpy.app.translations.rst:132: WARNING: Lexing literal_block 'See :func:`pgettext` notes.' as "python3" resulted in an error at token: '`'. Retrying in relaxed mode.
```
Pull Request: https://projects.blender.org/blender/blender/pulls/123097
Asset library loading uses the file browser backend (file-list), so it
would use the same job type. The job system makes sure that jobs of the
same type (or actually, with the same start callback)
wait for others of the same type to finish. This can be a problem here,
since loading asset libraries (which can take a while) could conflict
with regular file browers. Having both run in parallel is no issue, they
use local data only.
Also see #123033 to address the added TODO comment.
Fixes#121235
Pull Request: https://projects.blender.org/blender/blender/pulls/123027
Previous commit that made VSE strip controls not be blurry (91fa37fecb)
applied "snap to pixel grid" in a wrong place - the rectangle corners
should be snapped, not the center and half-size of it.
Pull Request: https://projects.blender.org/blender/blender/pulls/123065
The new `pgettext_n` function (typically imported as `n_`) can be used
when there is a need to extract messages, without translating them. It
is essentially a no-op equivalent to the C++ version `N_`.
The bloom render pass has been deprecated in Blender 4.2. It was still
visible in the UI in the shading popover and available in the python API.
This PR removes the UI option and deprecated the parts of the python API.
Current add-ons that use this API should still be able to use the API, but
it would not do anything. Add-ons are encourage to remove these calls.
The flags are not cleaned up so they should still work when switching back
to previous Blender versions.
Release notes have been updated to include these changes.
Pull Request: https://projects.blender.org/blender/blender/pulls/123059
Somehow the 16K inside a string is parsed as being an integer, leading
to error messages about the `K` suffix.
```
ERROR (gpu.shader): gpu_shader_icon_multi VertShader:
|
1 | #version 430
|
| Error: C0159: invalid char 'K' in integer constant suffix
```
Fixed by changing the 16K to the actual number.
Related to #122977 With this PR blender will start, but EEVEE will render pink.
Pull Request: https://projects.blender.org/blender/blender/pulls/123071
When navigating the samples were always reset. This was introduced
by 7ec59b05ff where samples needed
to be reset when painting.
This PR solves it by separating the navigation and the painting more
clearly in the API. Also cleans up some calls that are also encapsulated
via the EEVEE Instance class.
Validated that painting and navigating still worked with these changes
applied.
Pull Request: https://projects.blender.org/blender/blender/pulls/123064
The new option on bones to control the wire width had a redundant part
of `Custom Shape`. Since the property is already within a section for
Custom Shape we can shorten the label.
Pull Request: https://projects.blender.org/blender/blender/pulls/123063
Strips still have sharp corners when you're dragging them from file browser and
switch to rounded when dropped. Fix by using the same drawing code (and shader)
as regular timeline drawing path.
Pull Request: https://projects.blender.org/blender/blender/pulls/123013
Previously these were shown as missing add-ons, since they have been
intentionally removed, remove them as part of versioning instead
of showing them as "Missing Add-ons". This is especially important
for X3D & STL which were enabled by default which meant any user
loading 4.1 preferences would have them shown as missing add-ons.
Just for the `pyrna_struct_keyframe_insert()` function, reduce the
reporting level of keyframe insertion failures from `RPT_ERROR` to
`RPT_WARNING`. This prevents the conversion of these reports to a Python
exception.
`CombinedKeyingResult::generate_reports()` now accepts an option
argument `report_level`, so that the caller is in control over the type
of reports it generates.
Previously only errors were converted to exceptions; warnings were
implicitly cleared and never displayed. To avoid these 'keyframe
insertion failure' reports from becoming invisible, the
`pyrna_struct_keyframe_insert()` function now sends any warnings to
stdout (unless there were errors, in which case the old
error-to-exception behaviour is still there).
Pull Request: https://projects.blender.org/blender/blender/pulls/122827
Blender crashes when rendering a scene strip that references a scene
with a GPU compositor active. This is because when rendering a scene
strip, a new render with a nullptr system GPU context is created for the
scene it references, which is then used for compositing.
Ideally, the strip scene would have its own context, but we can't ensure
its context because we are not in the main thread. The alternative is to
then identify scenes that will be rendered before hand and set their
renders before starting the job, which doesn't seem like a great
solution. So for now, we just use the DST context in those cases.
Pull Request: https://projects.blender.org/blender/blender/pulls/123057
This makes sure to set the legacy properties when setting
the render method and the use transparent flag.
EEVEE-legacy should be able to render these materials
without issues.
When using Metal backend on ATI/Intel GPUs the stencil buffer doesn't
contain the correct information, skipping diffuse and glossy PBR components.
Failing behavior was introduced by e97e06ea2c
This PR works around this by reverting the code when using ATI/Intel GPUs.
The root cause is somewhere the combination of stencil export support, clear
operations and subpass.
**TODO**
- [ ] Validate that this fixes the ATI issue as well
Pull Request: https://projects.blender.org/blender/blender/pulls/122993