forked from blender/blender
Add automated tests for Storm, with both Hydra and USD export methods #66
@ -665,6 +665,33 @@ if(WITH_CYCLES OR WITH_OPENGL_RENDER_TESTS)
|
|||||||
-outdir "${TEST_OUT_DIR}/workbench"
|
-outdir "${TEST_OUT_DIR}/workbench"
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
if(WITH_HYDRA)
|
||||||
|
# Hydra Storm
|
||||||
|
foreach(render_test ${render_tests})
|
||||||
|
add_python_test(
|
||||||
|
hydra_storm_${render_test}_test
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/storm_render_tests.py
|
||||||
|
-blender "${TEST_BLENDER_EXE}"
|
||||||
|
-testdir "${TEST_SRC_DIR}/render/${render_test}"
|
||||||
|
-idiff "${OPENIMAGEIO_IDIFF}"
|
||||||
|
-outdir "${TEST_OUT_DIR}/hydra_storm"
|
||||||
|
-export_method "HYDRA"
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
foreach(render_test ${render_tests})
|
||||||
|
add_python_test(
|
||||||
|
usd_storm_${render_test}_test
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/storm_render_tests.py
|
||||||
|
-blender "${TEST_BLENDER_EXE}"
|
||||||
|
-testdir "${TEST_SRC_DIR}/render/${render_test}"
|
||||||
|
-idiff "${OPENIMAGEIO_IDIFF}"
|
||||||
|
-outdir "${TEST_OUT_DIR}/usd_storm"
|
||||||
|
-export_method "USD"
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
101
tests/python/storm_render_tests.py
Normal file
101
tests/python/storm_render_tests.py
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-FileCopyrightText: 2015-2023 Blender Foundation
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import platform
|
||||||
|
import shlex
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
import bpy
|
||||||
|
import addon_utils
|
||||||
|
|
||||||
|
addon_utils.enable("hydra_storm")
|
||||||
|
|
||||||
|
for scene in bpy.data.scenes:
|
||||||
|
scene.render.engine = 'HYDRA_STORM'
|
||||||
|
scene.hydra.export_method = os.environ['BLENDER_HYDRA_EXPORT_METHOD']
|
||||||
|
|
||||||
|
|
||||||
|
# When run from inside Blender, render and exit.
|
||||||
|
try:
|
||||||
|
import bpy
|
||||||
|
inside_blender = True
|
||||||
|
except ImportError:
|
||||||
|
inside_blender = False
|
||||||
|
|
||||||
|
if inside_blender:
|
||||||
|
try:
|
||||||
|
setup()
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def get_arguments(filepath, output_filepath):
|
||||||
|
return [
|
||||||
|
"--background",
|
||||||
|
"-noaudio",
|
||||||
|
"--factory-startup",
|
||||||
|
"--enable-autoexec",
|
||||||
|
"--debug-memory",
|
||||||
|
"--debug-exit-on-error",
|
||||||
|
filepath,
|
||||||
|
"-P",
|
||||||
|
os.path.realpath(__file__),
|
||||||
|
"-o", output_filepath,
|
||||||
|
"-F", "PNG",
|
||||||
|
"-f", "1"]
|
||||||
|
|
||||||
|
|
||||||
|
def create_argparse():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("-blender", nargs="+")
|
||||||
|
parser.add_argument("-testdir", nargs=1)
|
||||||
|
parser.add_argument("-outdir", nargs=1)
|
||||||
|
parser.add_argument("-idiff", nargs=1)
|
||||||
|
parser.add_argument("-export_method", nargs=1)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = create_argparse()
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
blender = args.blender[0]
|
||||||
|
test_dir = args.testdir[0]
|
||||||
|
idiff = args.idiff[0]
|
||||||
|
output_dir = args.outdir[0]
|
||||||
|
export_method = args.export_method[0]
|
||||||
|
|
||||||
|
from modules import render_report
|
||||||
|
|
||||||
|
name = "Storm Hydra" if export_method == 'HYDRA' else 'Storm USD'
|
||||||
|
|
||||||
|
report = render_report.Report(name, output_dir, idiff)
|
||||||
|
report.set_pixelated(True)
|
||||||
|
report.set_reference_dir("storm_renders")
|
||||||
|
|
||||||
|
if export_method == 'HYDRA':
|
||||||
|
report.set_compare_engine('cycles', 'CPU')
|
||||||
|
else:
|
||||||
|
report.set_compare_engine('hydra_storm')
|
||||||
|
|
||||||
|
test_dir_name = Path(test_dir).name
|
||||||
|
|
||||||
|
os.environ['BLENDER_HYDRA_EXPORT_METHOD'] = export_method
|
||||||
|
|
||||||
|
ok = report.run(test_dir, blender, get_arguments, batch=True)
|
||||||
|
|
||||||
|
sys.exit(not ok)
|
||||||
|
|
||||||
|
|
||||||
|
if not inside_blender and __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user