The issue was caused by the ImBuf of the scene strip render sharing the float
buffer pixels with the ImBuf from the render result. If the render result is
ever gets freed (i.e., by a request to perform another render) it'll leave the
strip ImBuf pointing to a freed memory.
This was caused by the #109788.
The simple solution is to restore the code to the state prior to the ImBuf
refactor in the RenderRsult. A better solution would be to use implicit
sharing, similar to how it was done in the #108045.
Pull Request: https://projects.blender.org/blender/blender/pulls/123731
EEVEE displays the Cryptomatte false color if the Cryptomatte passes are
enabled in the viewport, even if the display pass is set to something
else. This problem doesn't really trigger at the moment, because
Cryptomatte passes can't be enabled in the viewport unless the display
pass is set to Cryptomatte. But the issue triggers in case of multi-pass
compositing as in #123378.
This is caused by unconditional write to the fragment color in the film
shader in case of Cryptomatte. To fix this, we only write the fragment
color if the display storage type is Cryptomatte.
Needed by #123378.
Pull Request: https://projects.blender.org/blender/blender/pulls/123723
Provide a convenient way to access a writable directory for extensions.
This will typically be accessed via:
bpy.utils.extension_path_user(__package__, create=True)
This API is provided as some extensions on extensions.blender.org
are writing into the extensions own directory which is error prone:
- The extensions own directory is removed when upgrading.
- Users may not have write access to the extensions directory,
especially with "System" repositories which may be on shared network
drives for example.
These directories are only removed when:
- Uninstalling the extension.
- Removing the repository and its files.
When removing a repository & files a valid module name was assumed.
While this should always be the case, add an additional check so in
the unlikely event of memory/file corruption (especially `..`)
recursively removing files outside the repository is never allowed.
Recently, `volume` property has been added to scene strips. This causes
only volume property to be animated when adding fades with `fades_add`
operator.
Add fades to volume and opacity properties if these are available.
Pull Request: https://projects.blender.org/blender/blender/pulls/123236
select_box operator needs different context in preview and sequencer
regions. It wasn't specified, so it defaulted to sequencer context and
wasn't working in preview.
This PR sets poll for region and sets correct context for preview. This
also means shortcut appears on menu item in preview now.
Pull Request: https://projects.blender.org/blender/blender/pulls/123757
Remove release/datafiles/blender_icons.svg and the folders containing
the exported icon DAT files, blender_icons16 and blender_icons32 and
the files they contain.
The value was set and transfered to `MeshBatchCache`but never
actually used. Even then, this is clearly not a good solution to the
problem the comments mentioned. If that happens if would be
better to solve it in a different way.
Addresses #121240.
Instead of allocating a new array and recalculating mesh triangulation
every time the user enters sculpt mode, reuse the mesh's existing cache.
Currently in order to avoid recalculating triangulation on every brush update
(which would typically be necessary because the triangulation direction
depends on vertex positions), add a mechanism to "freeze" the cache to
skip recalculations until the user exits sculpt mode. That even avoids
recalculation if vertex positions aren't affected. This is necessary because
we can't use the cache in a dirty state; tagging the cache dirty frees the
triangulation array.
Removing the duplicate triangles array reduces memory usage by 384 MB
in a 16 million vertex sculpt, and makes entering sculpt mode 125ms faster
(tested on a Ryzen 7840u).
In the long term, I hope we find a different solution that's a bit more
transparent and hopefully more integrated with the caching system
in general. In the meantime, this is a relatively safe low impact change
that helps document the needs for such a system anyway.
Pull Request: https://projects.blender.org/blender/blender/pulls/123638
Changes the way the face set index generated for intialize by material.
In current implementation face set index is generated by adding 1 to
material index. In most cases it'll work fine. But in some cases hidden
face sets and material face sets can have same index.
Pull Request: https://projects.blender.org/blender/blender/pulls/123465
When autopep8 is accessed as a Python module (using `--no-subprocess`),
which is now default on MS-Windows.
- Perform version checks on the module version instead of the command.
- Remove checks for the command existing in the PATH.
- Adjust errors to make sense for a Python module.
On rare occassions we need to turn an icon into a bitmap rather than
just draw it. For example, File Browser needs the bitmaps of the large
folder and file icons for use while dragging list items. This PR just
adds functions for this conversion from cached glyphs, and then uses
them to load the gSpecialFileImages "prv" icons so we no longer have
to include these in an embedded PNG file.
Pull Request: https://projects.blender.org/blender/blender/pulls/123749
This was previously named `UV` in the UI.
Now renamed to the more appropriate `Rotation` since
it controls the random rotation of the texture on
each stroke point.
Otherwise implements the same functionality as GPv2.
Pull Request: https://projects.blender.org/blender/blender/pulls/123741
when computing coefficients in volume, the volume density of the object
at the top of the stack is used, which leads to wrong result if
overlapping volumes have different scales.
This commit fixes the problem by pre-multiplying the volume density per
object when evaluating the shader.
Pull Request: https://projects.blender.org/blender/blender/pulls/123733
Some tests would access system paths somehow, which implicitely creates
the static `m_systemPaths` variable, but would not explicitely call
`GHOST_DisposeSystemPaths` at the end to release it.
Noticeable when disabling the `WITH_TESTS_SINGLE_BINARY` option.