Commit Graph

1607 Commits

Author SHA1 Message Date
Hans Goudey
5d67f1eceb Fix: Broken sculpt performance tests after "pen_flip" removal
Caused by 6df437be5f
2024-11-07 09:15:05 +01:00
Jesse Yurkovich
42ac593b2e Hydra: Update Storm reference images due to test additions elsewhere 2024-11-06 10:29:41 -08:00
Sergey Sharybin
c897d402c4 Fix: Failing boolean diff test with recent Xcode
Newer Xcode (compared to the one used on buildbot) changed something
that affects precision, which makes it hard to guarantee indices in
specific tests.

It wasn't very practical from time investment perspective to try to
align precision between different Xcode versions, so instead allow
meshes to have different indices in the failing test that was failing.

Pull Request: https://projects.blender.org/blender/blender/pulls/129916
2024-11-06 18:03:40 +01:00
Campbell Barton
f234525753 Merge branch 'blender-v4.3-release' 2024-11-06 10:51:58 +11:00
Campbell Barton
b63aebf244 Merge branch 'blender-v4.3-release' 2024-11-06 10:51:50 +11:00
Campbell Barton
4404885993 Cleanup: exclude "./lib/" from pep8 checker 2024-11-06 10:49:53 +11:00
Campbell Barton
3e6659ddff Tests: exclude extension operators from "run operators" utility
Don't install/manipulate extensions as part of this utility.
2024-11-06 10:49:49 +11:00
Jesse Yurkovich
b4c2feea38 USD: enable material displacement support
This enables material displacement for UsdPreviewSurface import and
export. Scenarios are limited by what's supported by the preview surface
itself. Namely only Object Space displacement can be used (no vector
displacement)[1] and the Midlevel and Scale parameters are maintained by
adjusting the scale-bias on the image texture controlling the Height
(this means that Midlevel and Scale must be constants).

Hydra/MaterialX support is more complicated. First, there is a bug which
prevents scalar displacment from working correctly and that needs USD
2408+ for the fix[2]. Second, is that there's an open question about
which coordinate system to use for MaterialX's vector displacement maps.
Lastly, Hydra GL does not render displacement, making verification using
only Blender impossible[3]. As a result, this PR only makes MaterialX
"ready" for support, but stops short of actually connecting the final
piece of the node graph until more of the above can be sorted out.

Tests are added which cover:
- Variations of Midlevel and Scale values
- A constant Height setup
- Negative scenarios checking that only Object space is supported
  and that midlevel and scale need to be constants

[1] https://openusd.org/release/spec_usdpreviewsurface.html
[2] https://github.com/PixarAnimationStudios/OpenUSD/issues/3325
[3] https://forum.aousd.org/t/materialx-displacement-hydra-storm/1098/2

Pull Request: https://projects.blender.org/blender/blender/pulls/128909
2024-11-05 20:37:36 +01:00
Clément Foucault
f05daa4364 EEVEE: Update shadow linking render test 2024-11-05 16:40:17 +01:00
Clément Foucault
4310695f67 EEVEE: Update shadow linking render test 2024-11-05 16:36:21 +01:00
Bastien Montagne
4033a95191 Add crafted invalid blendfile to our test data. 2024-11-05 15:16:15 +01:00
Bastien Montagne
b35a5df8c9 tests: blendfile versionning: split in more tests, flush debug prints.
In case the process creashes, the prints about blendfiles being
processed could fail to be captured by the test framework.

And split these tests in 32 slices now, 8 was becomming way too slow to
complete for each test.
2024-11-05 15:01:14 +01:00
Hans Goudey
543132497c Tests: Add info to "benchmark directory not initialized" error message 2024-11-05 12:10:11 +01:00
Hans Goudey
4aa18b7242 Tests: Update test data hash for new geometry node test 2024-11-05 10:34:41 +01:00
Jesse Yurkovich
ae640bb2ab USD: Add tests for upcoming animated point instancer support 2024-11-04 22:56:33 -08:00
Campbell Barton
d920ef5425 Merge branch 'blender-v4.3-release' 2024-11-03 22:04:44 +11:00
Campbell Barton
b00550916c PyDoc: correct use of single back-ticks 2024-11-03 21:50:33 +11:00
Campbell Barton
7b3e2fd7dd mypy: add 3 scripts to the "make check_mypy" config 2024-11-02 23:18:59 +11:00
Campbell Barton
b3919319fb Merge branch 'blender-v4.3-release' 2024-11-02 15:44:18 +11:00
Campbell Barton
c056d03f93 Cleanup: move binary operator to line end in Python scripts 2024-11-02 15:43:26 +11:00
Falk David
859e4c8465 Merge branch 'blender-v4.3-release' 2024-10-31 17:11:44 +01:00
Falk David
7e87da72ab Fix #129637: GPv3: Python: add_points raises exception
Introduced by 68c665ffa1.
This fix forgot to change parameters of `GreasePencilStrokePointSlice`
in `add_points`.
The fix also adds a test for `add_points` and `remove_points`.

Pull Request: https://projects.blender.org/blender/blender/pulls/129640
2024-10-31 16:22:44 +01:00
Jesse Yurkovich
391612c725 USD: Add support for animated volumes
The existing Volume export, which already supports VDB file sequences
and static volumes created inside Blender, is now extended to handle
dynamically created and modified volumes. This allows scenarios where a
Volume Displace modifier is placed over-top an existing VDB sequence or
when Geometry Nodes is used to create animated volumes procedurally.

Detection of what counts as animation is simplistic and mimics what has
been used for Meshes. Essentially if there are any modifiers on the
volume we assume that the volume is "varying" in some way. This can lead
to situations where new volume files are written unnecessarily.

Volume import was also adjusted to correctly set the sequence "offset"
value. This is required to properly handle the case when a VDB sequence
begins animating at a different frame than what's implied by the file
name. For example, a VDB file sequence with file names containing 14-19
but the user wants to animate on frames 8-13 instead.

Tests are added which cover:
- Animated VDB file sequences
- Animated Mesh To Volume where the mesh has been animated
- Animated Volume Displacement where displacement settings are animated
- Animated Volumes created with a Geometry Nodes simulation

----
New test data has been checked in: `tests/data/usd/usd_volumes.blend` and files inside `tests/data/usd/volume-data/`

Pull Request: https://projects.blender.org/blender/blender/pulls/128907
2024-10-30 18:29:35 +01:00
Aras Pranckevicius
44ec81695c Fix #129325: VSE blur effect is biased for byte images
Lack of rounding in non-float images was leading to e.g. pure white
becoming just a tiny bit darker than pure white at some blur sizes.
2024-10-30 14:41:54 +02:00
Campbell Barton
f86710b90f Cleanup: pass multiple arguments to str.startswith 2024-10-30 16:33:37 +11:00
Campbell Barton
bb54d9ca5e Merge branch 'blender-v4.3-release' 2024-10-30 13:37:38 +11:00
Campbell Barton
dc53b280f8 Merge branch 'blender-v4.3-release' 2024-10-30 13:37:35 +11:00
Campbell Barton
74988d9368 Cleanup: quiet unused variable warnings for view layer tests 2024-10-30 13:36:50 +11:00
Campbell Barton
5162902a35 Cleanup: remove "import *" from view layer tests
Even though these tests are disabled, importing all members
is bad practice and prevents some linter checks from working.
2024-10-30 13:36:49 +11:00
Michael Jones
0f6a83202d Revert unintended change to tests/data
Revert unintentional tests/data change that happened in 029cd1f739
2024-10-24 11:12:25 +01:00
Michael Jones
029cd1f739 Cycles: Remove invalid use of MetalRT accept_any_intersection in scene_intersect_local
This PR fixes a latent issue arising from invalid use of `accept_any_intersection(true)` when performing SSS ray-stepping with MetalRT. The comment incorrectly states that "we can optimize and accept the first hit", but to guarantee correct behaviour in future we need to request the closest hit.
2024-10-24 10:42:59 +01:00
Campbell Barton
a0453ab87a Cleanup: update use of typing in for Python scripts 2024-10-23 12:48:09 +11:00
Jesse Yurkovich
15d79cf2b9 USD: Validate displayColor primvars in the tests
The USD test data files were recently updated to output a `displayColor`
attribute. This adds the relevant test verification for it.

Pull Request: https://projects.blender.org/blender/blender/pulls/129237
2024-10-19 20:59:25 +02:00
Campbell Barton
aac60361a0 Merge branch 'blender-v4.3-release' 2024-10-17 18:17:04 +11:00
Campbell Barton
51773a41cc Tests: add options for WITH_UI_TESTS
Support launching Blender in GDB as well as displaying the wayland
session which is useful for troubleshooting tests.
2024-10-17 18:15:33 +11:00
Jason C. Wenger
da689835e8 Fix #129110: Join triangles can assert when topology influence is used
Also add test.

Ref: !129121
2024-10-17 16:21:49 +11:00
Campbell Barton
7f48e82200 Cleanup: format 2024-10-16 21:09:25 +11:00
Sybren A. Stüvel
43d7558e5b Anim: Remove 'Slotted Actions' experimental flag
This commit takes the 'Slotted Actions' out of the experimental phase.
As a result:

- All newly created Actions will be slotted Actions.
- Legacy Actions loaded from disk will be versioned to slotted Actions.
- The new Python API for slots, layers, strips, and channel bags is
  available.
- The legacy Python API for accessing F-Curves and Action Groups is
  still available, and will operate on the F-Curves/Groups for the first
  slot only.
- Creating an Action by keying (via the UI, operators, or the
  `rna_struct.keyframe_insert` function) will try and share Actions
  between related data-blocks. See !126655 for more info about this.
- Assigning an Action to a data-block will auto-assign a suitable Action
  Slot. The logic for this is described below. However, There are cases
  where this does _not_ automatically assign a slot, and thus the Action
  will effectively _not_ animate the data-block. Effort has been spent
  to make Action selection work both reliably for Blender users as well
  as keep the behaviour the same for Python scripts. Where these two
  goals did not converge, reliability and understandability for users
  was prioritised.

Auto-selection of the Action Slot upon assigning the Action works as
follows. The first rule to find a slot wins.

1. The data-block remembers the slot name that was last assigned. If the
    newly assigned Action has a slot with that name, it is chosen.
2. If the Action has a slot with the same name as the data-block, it is
    chosen.
3. If the Action has only one slot, and it has never been assigned to
    anything, it is chosen.
4. If the Action is assigned to an NLA strip or an Action constraint,
    and the Action has a single slot, and that slot has a suitable ID
    type, it is chosen.

This last step is what I was referring to with "Where these two goals
did not converge, reliability and understandability for users was
prioritised." For regular Action assignments (like via the Action
selectors in the Properties editor) this rule doesn't apply, even though
with legacy Actions the final state ("it is animated by this Action")
differs from the final state with slotted Actions ("it has no slot so is
not animated"). This is done to support the following workflow:

- Create an Action by animating Cube.
- In order to animate Suzanne with that same Action, assign the Action
  to Suzanne.
- Start keying Suzanne. This auto-creates and auto-assigns a new slot
  for Suzanne.

If rule 4. above would apply in this case, the 2nd step would
automatically select the Cube slot for Suzanne as well, which would
immediately overwrite Suzanne's properties with the Cube animation.

Technically, this commit:
- removes the `WITH_ANIM_BAKLAVA` build flag,
- removes the `use_animation_baklava` experimental flag in preferences,
- updates the code to properly deal with the fact that empty Actions are
  now always considered slotted/layered Actions (instead of that relying
  on the user preference).

Note that 'slotted Actions' and 'layered Actions' are the exact same
thing, just focusing on different aspects (slot & layers) of the new
data model.

The "Baklava phase 1" assumptions are still asserted. This means that:
- an Action can have zero or one layer,
- that layer can have zero or one strip,
- that strip must be of type 'keyframe' and be infinite with zero
  offset.

The code to handle legacy Actions is NOT removed in this commit. It will
be removed later. For now it's likely better to keep it around as
reference to the old behaviour in order to aid in some inevitable
bugfixing.

Ref: #120406
2024-10-15 16:29:53 +02:00
Sybren A. Stüvel
d00e6e7353 Anim: update slot selection for Action Constraint
Like with NLA strips, Action assignment on Action Constraints needs to
have an extra step (compared to regular assignment to animated
data-blocks).

For the Action Constraint, the auto slot selection gets one more
fallback option (compared to the generic code). This is to support the
following scenario, which used to be necessary as a workaround for a bug
in Blender (#127976):

- Python script creates an Action,
- assigns it to the animated object,
- unassigns it from that object,
- and assigns it to the object's Action Constraint.

The generic code doesn't work for this. The first assignment would see
the slot `XXSlot`, and because it has never been used, just use it. This
would change its name to `OBSlot`. The assignment to the Action
Constraint would not see a 'virgin' slot, and thus not auto-select
`OBSlot`. This behaviour makes sense when assigning Actions in the
Action editor (it shouldn't automatically pick the first slot of
matching ID type), but for the Action Constraint I (Sybren) feel that it
could be a bit more 'enthousiastic' in auto-picking a slot.

Note that this is the same behaviour as for NLA strips, albeit for a
slightly different reason. Because of that it's not sharing code with
the NLA.

Pull Request: https://projects.blender.org/blender/blender/pulls/128892
2024-10-14 13:45:36 +02:00
Sybren A. Stüvel
76bddb41df Anim: Fix NLA Strip Action assignment
When creating a new NLA strip for an action, as well as when setting
`strip.action` via RNA, use the generic action-assignment code. This
ensures that the slot selection follows the same logic as other Action
assignments.

If the generic slot selection doesn't find a suitable slot, and there is
a single slot on that Action of a suitable ID type, always assign it.
This is to support the following scenario:

- Python script creates an Action and adds F-Curves via the legacy API.
- This creates a slot 'XXSlot'.
- The script creates multiple NLA strips for that Action.
- The desired result is that these strips get the same Slot assigned as
  well.

The generic code doesn't work for this, because:

- The first strip assignment would see the slot `XXSlot` (`XX`
  indicating "not bound to any ID type yet"). Because that slot has
  never been used, it will be assigned (which is good). This assignment
  would change its name to, for example, `OBSlot`.

- The second strip assignment would not see a 'virgin' slot, and thus
  not auto-select `OBSlot`. This behaviour makes sense when assigning
  Actions in the Action editor (assigning an Action that already
  animates 'Cube' to 'Suzanne' should not assign the 'OBCube' slot to
  Suzanne), but for the NLA I feel that it could be a bit more
  'enthousiastic' in auto-picking a slot to support the above case.

This is preparation for the removal of the 'Slotted Actions'
experimental flag, and getting the new code to run as compatibly as
possible with the legacy code.

The return value of `animrig::nla::assign_action()` has changed a bit.
It used to indicate whether a slot was auto-selected; it now indicates
whether the Action assignment was successful. Whether a slot was
assigned or not can be seen at `strip.action_slot`.

Pull Request: https://projects.blender.org/blender/blender/pulls/128892
2024-10-14 13:45:02 +02:00
Sybren A. Stüvel
86249a6216 Anim: Implement cycle-aware keying for Slotted Actions
Cycle-aware keying on slotted Actions now works the same as on legacy
Actions. In the future this will be improved, but for now it's good enough
to have the same behaviour as before.

Pull Request: https://projects.blender.org/blender/blender/pulls/128892
2024-10-14 13:44:55 +02:00
Sybren A. Stüvel
724b9dd02c Update tests/data submodule
Go to the latest commit in `tests/data`.
2024-10-14 11:14:46 +02:00
Jesse Yurkovich
6742573771 USD: Add data for upcoming tests and feature work 2024-10-11 12:19:27 -07:00
Clément Foucault
b1dfe39de1 EEVEE: Update render tests 2024-10-11 18:30:20 +02:00
Bastien Montagne
3523662af5 Fix idprop_datablock unittest missing some cleanups.
Found out while working on BPY/RNA refactor to make PointerRNA non-trivial
and fix memleaks in Python at exit.
2024-10-11 18:19:55 +02:00
Sybren A. Stüvel
f4f3158a10 Fix: Anim, restore missing automatic F-Curve groups
Restore the automatic F-Curve groups (like "Object Transforms"
when keying loc/rot/scale); 0a74768a98
removed a bit too much code.

Pull Request: https://projects.blender.org/blender/blender/pulls/128891
2024-10-11 17:52:01 +02:00
Clément Foucault
d8ccaa62fb Merge branch 'blender-v4.3-release'
# Conflicts:
#	tests/data
2024-10-11 14:11:58 +02:00
Clément Foucault
2f24879107 EEVEE: Update render tests 2024-10-11 14:05:59 +02:00
Clément Foucault
c06652e415 EEVEE: Update tests 2024-10-11 13:13:57 +02:00
Alaska
a3ce3315a0 Add Cycles render tests for ray offsetting precision issues 2024-10-11 03:02:11 +13:00