Tests: Fix and workaround Metal difference for Storm

* Disable Metal multisampling to match OpenGL.
* Block list all image half/float tests, these can all fail randomly.
* Blocklist tests failing due to issues in OpenUSD Metal implementation.
This commit is contained in:
Brecht Van Lommel
2025-01-31 22:45:56 +01:00
parent 4ec46eeca4
commit 4c2fb20e93
2 changed files with 44 additions and 10 deletions

View File

@@ -10,23 +10,51 @@ from pathlib import Path
# Unsupported or broken scenarios for the Storm render engine
BLOCKLIST_HYDRA = [
# Corrupted output
"image_half.*.blend",
"image_packed_float.*.blend",
"image_packed_half.*.blend",
# Corrupted output around borders
"image.*_half.*.blend",
"image.*_float.*.blend",
# Differences between devices/drivers causing this to fail
"image.blend",
]
BLOCKLIST_USD = [
# Corrupted output
"image_half.*.blend",
"image_packed_float.*.blend",
"image_packed_half.*.blend",
# Corrupted output around borders
"image.*_half.*.blend",
"image.*_float.*.blend",
# Nondeterministic exporting of lights in the scene
"light_tree_node_subtended_angle.blend",
]
# Metal support in Storm is no as good as OpenGL, though this needs to be
# retested with newer OpenUSD versions as there are improvements.
BLOCKLIST_METAL = [
# Thinfilm
"metallic.*physical.blend",
"metallic.*f82.blend",
"principled.*thinfilm.*.blend",
# Transparency
"ray_portal.blend",
"transparent.blend",
"transparent_shadow.blend",
"shadow_all_max_bounces.blend",
"underwater_caustics.blend",
"shadow_link_transparency.blend",
"principled_bsdf_transmission.blend",
# Volume
"light_link_surface_in_volume.blend",
"openvdb.*.blend",
"principled_bsdf_interior",
# Other
"bump.*.blend",
"bevel.*.blend",
"principled_bsdf_coat.blend",
"principled_bsdf_emission.blend",
"white_noise.*.blend",
"musgrave_multifractal.*.blend",
"autosmooth_custom_normals.blend",
"diffuse_normal_map.blend",
]
def setup():
import bpy
@@ -89,12 +117,14 @@ def main():
from modules import render_report
blocklist = BLOCKLIST_METAL if sys.platform == "darwin" else []
if args.export_method == 'HYDRA':
report = render_report.Report("Storm Hydra", args.outdir, args.oiiotool, blocklist=BLOCKLIST_HYDRA)
report = render_report.Report("Storm Hydra", args.outdir, args.oiiotool, blocklist=blocklist + BLOCKLIST_HYDRA)
report.set_reference_dir("storm_hydra_renders")
report.set_compare_engine('cycles', 'CPU')
else:
report = render_report.Report("Storm USD", args.outdir, args.oiiotool, blocklist=BLOCKLIST_USD)
report = render_report.Report("Storm USD", args.outdir, args.oiiotool, blocklist=blocklist + BLOCKLIST_USD)
report.set_reference_dir("storm_usd_renders")
report.set_compare_engine('storm_hydra')