Commit graph

1902 commits

Author SHA1 Message Date
Campbell Barton
141af3d117 PyAPI: step support for mathutils slicing
Extend slice get/set on Vector, Color, Euler, Quaternion, Matrix and
MatrixAccess to support extended slices with arbitrary step
(`obj[::2]`, `obj[::-1]`, etc.), matching Python list semantics,
with the exception that resizing isn't supported.

This also add support for MatrixAccess slice assignment
(mat.row[i:j] = ..., mat.col[i:j] = ...) previously raised TypeError.

Tests extended with checks that steps work as intended.

Ref !158183
2026-05-06 14:26:27 +10:00
Campbell Barton
4a741dfa2e Fix: crash iterating through frozen matrices
Row and column access used `BaseMath_ReadCallback_ForWrite`
which fails on frozen matrices, returning NULL.

Use the read-only `BaseMath_ReadCallback`, rely on the write
checks on the vectors to ensure the frozen matrix isn't modified.

Also correct invalid ROW/COL comments.

Ref !158183
2026-05-06 14:26:23 +10:00
Campbell Barton
6cf7667199 Fix: crash assigning empty slices to mathutils types
- Parsing zero length arrays entered a while loop starting at index -1
  mathutils_array_parse_fast, writing into negative indices (crashing).
- Color & Euler assignment wrote past the parsed size because their
  assignment loops iterated on their type size instead of the slice size.

Tests added for empty-slice assignment.

Ref !158183
2026-05-06 14:26:19 +10:00
Campbell Barton
decfc71d6a Fix: Vector slice assignment silently ignoring size mismatch
Expression such as: vec[0:3] = (1, 2, 3, 4)

Would silently ignore trailing items,
Other mathutils types would raise an error but vector ignored this.

Update tests and note why raising an exception is preferred
over resizing.

Ref !158183
2026-05-06 14:26:12 +10:00
Campbell Barton
6b6d06d806 Tests: add tests for mathutils index access and slicing
Test coverage in this area was incomplete, hiding various issues,
extend the tests in preparation for fixes and more complete coverage.

Ref !158183
2026-05-06 14:26:05 +10:00
Clément Foucault
42a6cd5920 EEVEE: Add ray backface hit behavior option
This is a scene wide option to choose backface hit behavior
for screen tracing. This allows more control of the look
of the Global Illumination.

Backface hits are defined as hitting the camera facing
geometry from behind.

The option is a slider that allows to reuse part of the
front-face radiance as backface indirect lighting
contribution.

Not considering rays hitting backfaces as "missed" ray
most of the light leaking that can happen when using
Screen Space Global Illumination.

The option can be turned off all-together using the checkbox
for compatibility reasons. Turning it off will recover the
same "ray fail" behavior of the previous version.

Note that this patch modifies what is treated as a backface hit.
The previous definition could return true on ray going away
from the viewer, which was incorrect. This fixes small patches
of missing hits next to depth discontinuities. This is why
one test needed to be updated.

Pull Request: https://projects.blender.org/blender/blender/pulls/157803
2026-05-05 12:15:36 +02:00
Le Gia Bao
5f2f7b0d0f PyAPI: Support slice steps for bpy_prop_array access
Read/write slice steps are now supported for RNA arrays.

  image.pixels[3::4]
  image.pixels[::-1]

Resolves #105943.

Ref !158086
2026-05-05 15:35:08 +10:00
Kévin Dietrich
c4d26e7f03 Alembic: support importing static object visibilities
This adds support to read object visibilities from an Alembic archive.
If an Alembic object is set as hidden, the corresponding Blender object
is hidden from both viewports and renders.

For viewport, the visibility is set on the `Base` so that the outliner
shows the correct flag, and so that the unhide operator (`ALT+H`)
works, as this is how users may interact with visibility state the
most.

Animated visibility is currently not supported.

Ref #69191.

Pull Request: https://projects.blender.org/blender/blender/pulls/157983
2026-05-05 01:35:21 +02:00
Clément Foucault
861ef28873 EEVEE: Raytracing: Resolve major issues
Serie of major fixes. See PR for more details.

Pull Request: https://projects.blender.org/blender/blender/pulls/157059
2026-05-01 09:55:52 +02:00
Campbell Barton
f0c23f2ab7 PyAPI: expose ImBuf.with_buffer as a shaped memoryview
Previously the context manager yielded a flat 1-D memoryview for the
full image and a 2-D `(rows, columns * channels)` view for a region,
which obscured the geometry of the underlying pixels.

Returning shaped `(height, width, channels)` memoryview in both cases:

- Matches the shape convention used by `numpy` and other image
  libraries, and the shape of `bpy.types.Window.screenshot` so
  values can flow between them without reshaping.
- Enables direct per-pixel/per-channel indexing as `buf[y, x, c]`
  instead of computing a flat offset.

Bulk slice-assignment still requires 1-D on both sides
(a CPython limitation, `NotImplementedError`).

Ref !158030
2026-05-01 07:02:54 +00:00
Sean Kim
c6d548a01f Cleanup: Remove default value and make output_dir required for tests
These output directories are intended to be idempotent & not shared
across test runs. While typically users will call the script via `ctest`
commands, it is still better to enforce the callee to pass in the
desired temporary directory so that cleanup steps avoid deleting
unintended data.

For a number of `bl_animation` tests, no arguments are passed to the
underlying test script, so the entire scaffolding for `argparse` has
been removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/157970
2026-04-30 18:35:14 +02:00
Le Gia Bao
e76e9d7c0c Fix: incorrect slice access and error messages in the Python API
Resolve incorrect use of _PyEval_SliceIndex when accessing slices.

Add tests that would have caught this.

Co-authored-by: Campbell Barton <campbell@blender.org>

Ref !157968
2026-04-30 17:13:46 +10:00
Sean Kim
d9cde21438 Core: Add wm.save_auto_save operator
This commit adds a specific operator to trigger creation of an autosave.
The primary intention for this is for testing further autosave
functionality as part of !152453

Includes a basic test for this functionality, similar to other I/O
tests.

Pull Request: https://projects.blender.org/blender/blender/pulls/157812
2026-04-30 00:47:18 +02:00
Jesse Yurkovich
a593ee9f47 Tests: Add imbuf tests for the DDS image format
Add coverage for loading in BC1, BC3, BC4, BC5, and BC7 variants.
Note: BC2 (DXT3) is still missing.

Pull Request: https://projects.blender.org/blender/blender/pulls/157938
2026-04-29 20:21:51 +02:00
Julian Eisel
8d5b8f07fa Fix: Assets: Online listing boolean properties not readable by Blender
The online listing schema uses `IDP_BOOLEAN` as type for boolean
properties, but the Blender custom property deserializer expects it to
be `IDP_BOOL`.

Online brush assets would not show in the asset shelf because of this
issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/157793
2026-04-29 10:32:08 +02:00
Campbell Barton
8d139ddc8e Fix #157653: Incorrect rotation with spin + extrude
Resolve:

- Regression in [0] vertices already rotated to step a were being
  rotated again by the full step a+1 rotation. Reset extruded vertices
  to their original coordinates each step before applying the rotation.
- Regression in [1] the translation (used for screw) was rotated
  in place each iteration, accumulating rotations across steps.
  Compute the step translation fresh from the original vector instead.

Adds tests covering spin and screw with duplicate enabled/disabled.

Ref !156356

[0]: b20e99a626
[1]: 08afa95a78
2026-04-29 16:35:15 +10:00
Christoph Lendenfeld
2b354c46ca Anim: Unit tests for motion paths
No functional changes.

This adds basic unit tests for motion paths for objects and bones.

Pull Request: https://projects.blender.org/blender/blender/pulls/157922
2026-04-28 16:33:56 +02:00
Hans Goudey
0a164b765a Fix #157890: Assert creating node tool with string sockets
Contort the logic to support the strict assert:
`BLI_assert(default_value == nullptr || default_value[0]);`
And add a second test for this case.

Pull Request: https://projects.blender.org/blender/blender/pulls/157902
2026-04-28 15:14:40 +02:00
Jesse Yurkovich
c7844088e4 Tests: Add imbuf tests for the iris image format
Pull Request: https://projects.blender.org/blender/blender/pulls/157865
2026-04-27 20:59:48 +02:00
Sean Kim
56baeb85c3 Tests: Add experimental texture paint unit test
Adds a basic unit test using the existing paint brush. Similar to the
sculpt, vertex paint, and weight paint tests, this test applies a stroke
to a mesh and then compares the initial and new state of the image to
ensure that no invalid data has been written and that some data has
successfully changed.

Currently, the brush is tested against float and byte buffers, further
exhaustive tests are planned, though this test is helpful in the
meantime to avoid breakage while refactoring

Part of #155365

Pull Request: https://projects.blender.org/blender/blender/pulls/157669
2026-04-22 23:13:16 +02:00
Sebastian Parborg
fe30b5b705 Build: Make OpenColorIO and OpenEXR mandatory deps
Both OpenColorIO and OpenEXR were implicitly always required as these are non optional dependencies of OpenImageIO. Because OpenImageIO currently doesn't try to find these dependencies by itself properly, we get build failures in bpy and lite builds when OpenColorIO and/or OpenEXR is turned off on the Blender side of things. (However, they do properly list them as dependencies in cmake, so if you manually look for them, the OpenImageIO cmake target will pull in all of the required libraries properly)

As OpenImageIO is a mandatory dependency, make OpenColorIO and OpenEXR mandatory as well as these libraries need to be included either way for OpenImageIO (and by extension Blender) to work.

Because of this we can again remove the linker workarounds as now we should properly pull in the needed dependencies where needed.

Pull Request: https://projects.blender.org/blender/blender/pulls/156154
2026-04-22 17:39:44 +02:00
Sean Kim
c985c2067b Cleanup: Tidy up sculpt_paint tests
* Reduce duplication by using some test helpers
* Ensure file level docstring is at beginning of file
* Alphabetize imports

Pull Request: https://projects.blender.org/blender/blender/pulls/157658
2026-04-21 18:57:02 +02:00
Campbell Barton
9a161fed54 Tests: add tests for BLF buffer & VFont text
Adds tests for BLF font drawing which currently has no tests:

- blf.draw into pixel buffer.
- blf.draw to a GPU buffer.
- 3D text drawing.

These are compared with reference images using idiff.

- Tests fail if they don't match the images.
- Tests fail if they don't match the expected dimensions.

BLF bitmap drawing covers:

- Combining characters.
- Word wrapping.

BLF VFont drawing covers:

- Combining characters.
- Word wrapping.
- Colored materials.
- Text boxes.
- Horizontal & vertical alignment.
- Text on a curve.

To see the HTML output the Python scripts can be run with
`--show-html` which generates a HTML showing the differences.

Notes:

- This misses tests for mono-spaced drawing
  as it's not available to Python.
- The BLF/GPU code-path is not enabled as part of CTest
  (only VFont and BLF_buffer API's are included), because the GPU
  context is needed. These tests might need to use a graphical context
  like the UI tests do.

Ref !157100
2026-04-20 13:30:11 +10:00
Brecht Van Lommel
3581d96afb Fix: Running operator_function_py_api test clears recent files
I noticed my recent files list was getting randomly cleared, and traced
it to running this test. Use wm.previews_clear instead.

Issue introduced in 216c095d5d.

Pull Request: https://projects.blender.org/blender/blender/pulls/157483
2026-04-17 13:35:05 +02:00
Campbell Barton
89a8ba391e Cleanup: bad indentation for CMake files
Ref !157497
2026-04-17 19:54:29 +10:00
Brecht Van Lommel
da852a9b79 USD: Support colorspace conversions when reading and writing USD files
On export, apply the UsdColorSpaceAPI schema to the root prim, materials
lights, color primvras and shader prims for image textures. By default
the root prim would have been enough, but it is possible to export with
out a root prim and this keeps behavior consistent independent of that
setting.

On import, use UsdColorSpaceAPI::ComputeColorSpaceName to resolve
the colorspace for each color attribute through the USD hierarchy,
and convert from that colorspace to scene linear.

Pull Request: projects.blender.org/blender/blender/pulls/157196
2026-04-16 23:15:41 +02:00
Sybren A. Stüvel
5315faaf12 Assets: ensure catalog paths for online assets do not contain a colon
The Asset Catalog definition file is colon-separated, so colons should
not appear in any of the fields themselves. Rather than adding elaborate
escaping rules, just don't write those characters.

This is just implemented for online asset listings, as that's considered
3rd-party data, and thus needs more sanitising before writing to a local
file.

Pull Request: https://projects.blender.org/blender/blender/pulls/157439
2026-04-16 11:24:47 +02:00
Falk David
0d8debaa74 Nodes: Add versioning for interface socket indentifier sanitization
Discovered during development of !156706.

Prior to 1561c1ea4a socket identifiers could  (in rare cases) essentially be arbitrary names.
This is because in version `(2, 66, 2)` the socket names got copied to the identifiers.

But since 1561c1ea4a, socket identifiers are expected to be valid RNA identifiers.
This PR adds versioning code that sanitizes the socket identifiers.

Pull Request: https://projects.blender.org/blender/blender/pulls/157286
2026-04-13 19:33:59 +02:00
Hans Goudey
15b0a2a574 Tests: Add test for node tools with data-block inputs
After the RNA changes for Geometry Nodes, we are finally very close
to being able to pass data as inputs to node tools, which allows
creating a test that creates and runs a node tool with a data-block
input. Historically this has broken a few times, so it makes sense for
a first test of this system.

A few tweaks are necessary to get this to work. First, because the
registration of node group operators is currently called by the notifier
system, it doesn't happen in background mode. I added a WindowManager
RNA function to trigger this manually. Second, passing a dictionary to
define the inputs of the operator is necessary because of the rather
complex RNA type hierarchy, however this dictionary conversion wasn't
handled recursively in the operator calling code in bpy_rna.cc. This is
corrected by simply also handling the PropertyGroup base type used for
these node group input properties.

Pull Request: https://projects.blender.org/blender/blender/pulls/157078
2026-04-11 15:56:12 +02:00
Jonas Holzman
6b03e560aa Cleanup: CMake formatting
A common mistake while writing CMake code is to write if the C/C++ way
`if (something)` whereas CMake uses `if()` without spaces.

Cleanup the few cases of this mistake (as well as other statement like
set()) throughout the codebase.
2026-04-10 13:03:26 +02:00
Hans Goudey
5523f921fc Fix #155953: Geometry nodes bake paths not reported via foreach_path
This was never implemented. Adding support is relatively simple.
We either expose the path corresponding to the bake or the
path the bake will inherit from the modifier.

Because there are arbitrarily many metadata files and the connection
to the binary blob files is only clear at runtime when loading the bakes,
this PR just exposes the entire directory.

Co-authored-by: Sybren A. Stüvel <sybren@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/156380
2026-04-09 11:19:41 -04:00
Christoph Lendenfeld
c00226a6ae Anim: Add unit tests for pose slide operators
This expands the unit tests in `bl_animation_pose_slide.py`
with tests for
* Blend with Rest Pose
* Blend to Neighbor
* Push/Relax
* the limitation that axis lock does not work on quaternion rotations

Pull Request: https://projects.blender.org/blender/blender/pulls/157108
2026-04-09 11:22:44 +02:00
Sean Kim
6783ea037d Refactor: Paint: Migrate automask settings to Paint struct
Currently, automasking is only used inside Sculpt mode. In preparation
for further changes needed to expose the functionality to the 3D Texture
Paint brush, this PR migrates the values from being stored on the
`Sculpt` struct to the `MeshAutomaskingSettings`, stored as a pointer
on the `Paint` struct.

We do not default initialize these values, as it is specifically
relevant for Sculpt, Vertex Paint, Weight Paint, and Texture Paint.

Part of #156409

Pull Request: https://projects.blender.org/blender/blender/pulls/156494
2026-04-09 06:42:14 +02:00
Sean Kim
be36644bfe Fix #156993: Mask from Cavity creates inverted mask
When calculating the mask values, calculate the relative `factor` of the
automask for a given vertex and apply that as the value of the
.sculpt_mask. This is incorrect, as the `factor` is inversely related to
the mask value (i.e. a mask value of 1.0 corresponds to a factor value
of 0.0).

This was already fixed for creating a mask from boundary elements, to
extend the fix, simply remove the ability to specify whether the mask
should be based on the inverted factor or not in
`apply_mask_from_settings`, and always assume that it should be.

Pull Request: https://projects.blender.org/blender/blender/pulls/157021
2026-04-07 22:09:30 +02:00
Bastien Montagne
047f6f243a New global undo test: fix mistake in code.
Reported in
https://projects.blender.org/brecht/paste/src/branch/main/llm_review/log_2026_w14.md
2026-04-07 12:00:06 +02:00
Julian Eisel
895748c54d Tests: Add UI tests for quick effects
These tend to break when there are bugs somewhere else, as such they are
a good case to cover in higher level testing.

Rather than testing the quick effects themselves (like, testing that
they do exactly the right thing), just make sure that adding them
doesn't crash, and does roughly the right thing.

When building without fluids support, the Quick Liquid and Quick Smoke
tests won't run, but print an error. I think that is better than
failing, because it's common to build without these and the failures
would be annoying.

Pull Request: https://projects.blender.org/blender/blender/pulls/156808
2026-04-06 15:24:45 +02:00
Clément Foucault
5b273c17d8 EEVEE: Fast GI: Resolve major issues
- Fix HiZ texture not sampled with integer LOD
- Fix AO light leaking caused by spherical harmonics
- Fix LOD scaling with precision slider
- Fix normal initialization inside the tracing shader
- Fix energy conservation
- Fix radiance reprojection

Pull Request: https://projects.blender.org/blender/blender/pulls/156597
2026-04-03 12:59:12 +02:00
Bastien Montagne
f01ffcf43b Core: Add some very simple initial global undo unittests.
Still much more to be added, but we have to start somewhere...

Pull Request: https://projects.blender.org/blender/blender/pulls/156721
2026-04-03 12:05:44 +02:00
Aras Pranckevicius
2209ed9433 Tests: Sequencer GPU render tests
Current sequencer render tests always run on the CPU. With addition of
compositor based transitions and modifiers, they could be running on
the GPU (and more of that whole pipeline will be able to use the GPU
soon).

Add ability to run these tests on the GPU, gated behind the same
WITH_GPU_COMPOSITOR_TESTS build option (on the buildbot that is
`+test_gpu_compositor`)

Pull Request: https://projects.blender.org/blender/blender/pulls/156704
2026-04-02 08:19:56 +02:00
Brecht Van Lommel
329e8a5cfc Fix #156474, #156473: Cycles wrong mipmap with some types of texture coords
Creating a texture coordinate by combining a UV Map with a white noise
texture did not properly handle that one provides derivatives while the
other does not. It would read from wrong or uninitialized stack memory,
now make sure that is zeroed.

Pull Request: https://projects.blender.org/blender/blender/pulls/156596
2026-04-01 17:56:58 +02:00
Julian Eisel
5556e04509 Assets: Make remote library listing work with custom properties
The remote library listing already included custom properties. However,
the format they used didn't match what the C++ indexer expected at all.
This means the custom properties would essentially get lost. Sometimes
they contain important information though, for example, the type of node
tree so the compositor asset shelf can display only compositing assets.

The C++ indexer expected the same format as for the local asset index.
This avoids duplicating the reading code. This commit makes the listing
match that.

Another issue is, that a top level custom property should always be a
group property (this is the one iterated within when doing
`bpy.types.AssetData.items(), like the listing generator does).
Otherwise adding more properties isn't supported, and property lookups
assumed this. We can handle that by letting the indexer create the top
level group if needed, that way it can be implicit in the remote library
listing.

Pull Request: https://projects.blender.org/blender/blender/pulls/156305
2026-03-31 17:11:34 +02:00
Christoph Lendenfeld
937e31790d Anim: Add unit tests for pose slide operators
In preparation for upcoming changes in the pose slide code,
the area gets a few unit tests to protect us from regressions.

Part of #156579

Pull Request: https://projects.blender.org/blender/blender/pulls/156635
2026-03-31 14:23:36 +02:00
Bastien Montagne
52054aba9f Fix #155797: WM: Break events handling after an undo/redo.
This commit introduces a new `WM_event_handling_break` API, that allows
some code executed during event handling (e.g. operators etc.) to
request the `WM_main` main event loop to stop processing the event
queues and to do a full loop (including redraw step) before resuming
handling of the events.

`test_undo.py` undo tests had to be modified to add a small delay when
batch-triggering undo/redo events, to give Blender enough time to
process all the relevant events and reach the expected state.

Co-authored-by: Campbell Barton <ideasman42@noreply.localhost>
Pull Request: https://projects.blender.org/blender/blender/pulls/156375
2026-03-31 10:42:04 +02:00
Brecht Van Lommel
094a156897 Tests: Limit image mipmap texture cache tests to Cycles
They are giving different results on some machines, and are mainly there
to test Cycles behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/156446
2026-03-27 21:20:43 +01:00
Brecht Van Lommel
e9e61bff39 Tests: Add texture cache image tests
Add texture cache variations of image tests. Re-using the existing
mechanism from volume ray marching, but tweaked so they appear on
the same results.html page.

Add new image_mipmap tests that use an image with different colored
mipmap levels, testing ray differentials and mipmaps in different
scenes.

Pull Request: https://projects.blender.org/blender/blender/pulls/154913
2026-03-27 16:07:07 +01:00
Brecht Van Lommel
db9060b4d3 Cycles: Stop using OpenImageIO texture cache for OSL
This will be replaced by the texture cache. Advanced OpenImageIO features
will no longer be available, and texture filtering results will be different.
But performance will be better and there will be consistency with SVM.

OSL specifc image tests were removed as these now match SVM exactly and are
tested by WITH_CYCLES_TEST_OSL.

Pull Request: https://projects.blender.org/blender/blender/pulls/154913
2026-03-27 16:07:05 +01:00
Aras Pranckevicius
d086b59640 VSE: Lazy colorspace conversions (#119501)
VSE by default uses sRGB color space, and was immediately converting
everything into it. In some cases that created redundant colorspace
conversions.

Now, all images are converted into sequencer (default sRGB) color space
only "when needed", which is these cases:
- Strip has non-default color multiplier or color saturation setting,
- Strip has "make float" option on, and input is not already float,
- Image is an input to a non-compositor effect,
- Image needs to be blended with result of lower channels,
- Non-compositor modifier *without* using "linear modifiers" option.

Note: this is not 100% backwards compatible change, because strip scale
or rotation does *not* cause it to get converted to sequencer color
space. This only affects strips where images are not already sRGB; now
the pixels will be filtered in their current color space. Arguably when
that color space is linear, that is *more correct* result than
previously, but it can change the result ever so slightly
(example image in the PR).

Performance (Ryzen 5950X / RTX 3080Ti, Linux):

Scenario A: 100 4K resolution EXR images (1.8GB), just render out this
sequence as H.264 movie, no effects, transforms, nothing: 51sec -> 48sec.

Scenario B: several simple compositor effects stacked on a strip, plus
that is blended with a compositor based procedural texture strip.
Playback FPS with GPU compositor: 5.5FPS -> 6.2FPS.

Pull Request: https://projects.blender.org/blender/blender/pulls/156281
2026-03-27 13:47:45 +01:00
Jeroen Bakker
2f657feb36 GPU: Mipmap filtering consistency
In OpenGL mipmap creation is a driver responsibility. In Metal
and Vulkan this became an application responsibility. This results
in a mismatch between OpenGL and the other backends.

This PR will implement mipmap creation inside the GPU module. It
is for now only enabled for Vulkan. OpenGL and Metal will be added
in separately.

This PR introduces a compute shader that will generate the
mipmap chain. The compute shader is be based on
https://github.com/nvpro-samples/vk_compute_mipmaps/tree/main/nvpro_pyramid
general sharer. This shader can calculate 2 mipmap levels at a time.

This PR adds the first couple of texture formats and falls
back to the backend specific implementation for the rest. The
supported texture formats are:

- 2D texture/UNORM_8_8_8_8
- 2D arrayed texture/UNORM_8_8_8_8
- 2D texture/SFLOAT_16
- 2D arrayed texture/SFLOAT_16
- 2D texture/SFLOAT_16_16_16_16
- 2D arrayed texture/SFLOAT_16_16_16_16

Other texture formats will be added later on and OpenGL/Metal enablement
will be added later.

Pull Request: https://projects.blender.org/blender/blender/pulls/155463
2026-03-26 12:59:46 +01:00
Miguel Pozo
cfc25059e7 Render Tests: Add instancing-types
Made for testing #154963.

Pull Request: https://projects.blender.org/blender/blender/pulls/155956
2026-03-25 15:06:06 +01:00
Miguel Pozo
3f0ac42666 Workbench: Add workbench specific tests, remove non useful tests
Part of #148449.

Add a Workbench-specific folder for testing Workbench-specific features.
Generate a different list of tests in CMake, removing tests without a
meaningful translation to Workbench.
Removes attributes, bsdf, displacement, integrator, light,
light_linking, node_inlining, principled_bsdf, raycast, shader, shadow,
and sss.

Some features (shadows, outlines, curvature) don't have specific tests
and are instead enabled/disabled across the added tests.
This has the advantage of testing that they work correctly in
combination with other features without increasing the number of tests.

This also adds tests for viewport-specific volume features
(interpolation, density, slices).
These tests are added to the openvdb folder since they require
`WITH_OPENVDB` to work.
They could be disabled on the Python side for other engines, or moved
to a workbench_openvdb folder if necessary.
However, since they use very low-resolution volumes, it may be good to
keep them to test interpolation in EEVEE and Cycles, even if they're a
bit redundant.

Pull Request: https://projects.blender.org/blender/blender/pulls/153558
2026-03-24 18:04:33 +01:00