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
Having the sun extracted is mandatory to keep
the same look and avoid too much light
leaking compared to EEVEE-Legacy. But adding
shadows might create performance overhead and
change the result in a very different way.
So we disable shadows in older file.
This should not happen and any failure here should be considered a bug.
But for end users better not to hang Blender, and to have a better
diagnostic for developers in bug reports.
Ref #82483
Pull Request: https://projects.blender.org/blender/blender/pulls/123023
CTX_data_ensure_evaluated_depsgraph should not be used in drawing code.
This triggered a depsgraph updated which in turn called
DRW_notify_view_update. This would bind the GPU context a second time
and hang due to recursive mutex calls.
Issue wasn't directly related to material assets or the shader editor.
Simpler steps to reproduce:
- Open Asset Browser
- Change Asset Browser to different editor type
- Open new file (Ctrl+N)
The asset browser would remain in storage as inactive editor, including
pointers to the asset system. When opening a new file, the asset system
would get freed before the asset browser, which would then access
dangling pointers as part of its own freeing process.
Part of the issue is that `SpaceType.exit()` doesn't get called in this
case, which would remove the asset system references before the asset
system is freed. Will address this in a follow up in main, but best to
not depend on the `exit()` callback too much. Easy to do here.
Add the color for the new keytype 'generated' to the VSE theme settings
as well.
This includes the versioning code that loads the default from the scene.
Without this, the preference would be initialised to black.
Note that the 'Blender Light' theme does not have any colors for any of
the key types, so I also didn't add the 'generated' type there.
Pull Request: https://projects.blender.org/blender/blender/pulls/123005
The following code in py console would return a python string object,
instead of the expected bytes one.
```python
value = b"Hello World"
key = "a"
C.object[key] = value
C.object[key]
>>> b"Hello World"
C.object.path_resolve('["%s"]' % key)
>>> "Hello World"
```
Now it will return a byte object as it should.
Found while investigating #122843 .
- "Show the result of running commands in the main interface...": add
punctuation.
- "Re-Installed" -> "Reinstalled" seems more common.
- "increase_" and "decrease_subdivision" in the Grease Pencil
modal...: use title case instead of snake case for label.
- "Use a automatic number..." -> "an", typo.
- "... points,{} splines": missing space.
- "End Frame is larger than Start Frame": wrong order in error message.
- "Approximate the object as sphere, which diameter is equal to
thickness the defined...": grammar.
- "Show Seconds" -> "Use Timecode": this option is not necessarily about
seconds. Suggested by Pablo Vasquez.
- Brightness and contrast node input descriptions: add missing spaces.
- "Gamma controls the relative intensity... full white.": remove
trailing ".".
Pull Request: https://projects.blender.org/blender/blender/pulls/122972
Fixes#116567
The issue was with a flag that skips a particular post-evaluation step
specially for the Child Of constraint. The flag wasn't getting properly
unset when the constraint target was removed, and therefore that
post-evaluation step was getting erroneously skipped in some cases.
This commit fixes the issue by always setting the flag appropriately in
the Child Of evaluation function itself. This is admittedly rather
hacky, but no more hacky than the existence of the flag in the first
place.
Pull Request: https://projects.blender.org/blender/blender/pulls/122881
This patch makes sure that when both left/right handles on a strip are
selected, they are given individal snap points in TransSeqSnapData.
Prior to this change, when both handles were selected, snapping only
worked on the left handle.
Pull Request: https://projects.blender.org/blender/blender/pulls/122931
Snapping to hold offsets was broken by 76043bc, this patch restores the
functionality by simply calculating the image data start/end points and
letting existing clamping code take over to make sure this snap target
does not exist outside of the bounds of the strip.
Pull Request: https://projects.blender.org/blender/blender/pulls/122934
`BMVert.copy_from_vert_interp()`'s description and the name `vert_pair`
implies two verts, but the argument itself was described and typed as a
single `BMVert`.
Ref: !122974
Light volume probe world shader doesn't read from the irradiance atlas
but its create info registered it as a read/write texture. This
raised a validation error on Metal/Intel as the combination
RGBA16F FLOAT3D read write isn't supported.
Pull Request: https://projects.blender.org/blender/blender/pulls/122646
All add-ons were being scanned at startup, while this didn't cause
errors it was noticeable with extensions where any errors in the
manifest were being reported at startup, even when running with
factory-startup (including blender's own tests).
Address two issues:
- The logic to "reset" add-ons, so as to match the preferences when
reverting or resetting preferences always ran on startup.
This occurred because a check for Python being initialized was
incorrectly used to detect that this wasn't the first time preferences
were being loaded (regression in [0]).
- Resetting add-ons scanned all add-ons (including disabled add-ons) to
ensure their module cache is up to date. Since this the cache is
lazily initialized, it's simpler to set it as uninitialized as
resetting the add-ons doesn't require the cached meta-data.
[0]: 497bc4d199
Although c9fa73a379 made the problem worse. The incorrect to snap to
edges when one of their vertices is behind the viewer is much older.
The problem occurred because, in perspective mode, when we project a
vertex with negative "zfac", its projected value is undefined as it
depends on the position of the other vertex.
Thus, both the distance test and the lambda in these cases were wrong.
The solution was to calculate the snap point directly in 3D, using
`closest_ray_to_segment_v3` and avoiding projecting the edge.