Files
test2/tests/python/sequencer_render_tests.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

70 lines
1.8 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2015-2022 Blender Authors
#
# SPDX-License-Identifier: Apache-2.0
import argparse
import os
import sys
from pathlib import Path
BLOCKLIST = [
"hdr_simple_export_hlg_12bit.blend",
"hdr_simple_export_pq_12bit.blend",
Video: Save colorspace metadata based on display, remove HDR option Now that there are Rec.2100 PQ and HLG displays, the additional HDR option for video export is redundant. Typically you would now select a HDR display early on and do all your video editing with it enabled. For saving a HDR video, the encoding panel will now show the name of the color space, and warn when the video codec or color depth is incompatible. Since this is now based on interop IDs for the dislpay color spaces, we can map more of those to the appropriate CICP code. This works fine for Display P3, in my tests it looks identical to sRGB except that the wide gamut colors are preserved. However Rec.1886 and Rec.2020 are problematic regarding the transfer function, although the latter at least has the correct primaries now. So it should be a net improvement and this could be looked at later if anyone wants. --- Background: * Rec.1886 and Rec.2020 display color spaces in Blender use gamma 2.4. * BT.709 trc is almost the same as gamma 2.4, so seems like the correct choice. * We already write sRGB with BT.709 trc, which seems wrong. * Yet sRGB matches exactly between Blender display and QuickTime, while Rec.1886 and Rec.2020 do not. * Display P3 with BT.709 trc matches sRGB with BT.709 trc, just adding the wide gamut colors. So that is what is used for now. Also using the sRGB trc the file is not recognized by QuickTime. There is apparently a well known "QuickTime gamma shift" issue, where the interpretation of the BT.709 trc is different than other platforms. And you need to do workarounds like writing gamma 2.4 metadata outside of CICP to get things to display properly on macOS. Not that QuickTime is necessarily the reference we should target, but just to explain that changing the previous behavior would have consequences, and so it this commit leaves that unchanged. Pull Request: https://projects.blender.org/blender/blender/pulls/145373
2025-08-29 01:29:57 +02:00
"sdr_simple_export_p3_aces_10bit.blend",
"hdr_simple_still_test_file.blend",
]
def get_arguments(filepath, output_filepath):
dirname = os.path.dirname(filepath)
basedir = os.path.dirname(dirname)
args = [
"--background",
"--factory-startup",
"--enable-autoexec",
"--debug-memory",
"--debug-exit-on-error",
filepath,
"-o", output_filepath,
"-F", "PNG",
"-f", "1",
]
return args
def create_argparse():
parser = argparse.ArgumentParser(
description="Run test script for each blend file in TESTDIR, comparing the render result with known output."
)
parser.add_argument("--blender", required=True)
parser.add_argument("--testdir", required=True)
parser.add_argument("--outdir", required=True)
parser.add_argument("--oiiotool", required=True)
parser.add_argument("--batch", default=False, action="store_true")
return parser
def main():
parser = create_argparse()
args = parser.parse_args()
from modules import render_report
report = render_report.Report("Sequencer", args.outdir, args.oiiotool, blocklist=BLOCKLIST)
report.set_pixelated(True)
# Default error tolerances are quite large, lower them.
report.set_fail_threshold(2.0 / 255.0)
report.set_fail_percent(0.01)
report.set_reference_dir("reference")
ok = report.run(args.testdir, args.blender, get_arguments, batch=args.batch)
sys.exit(not ok)
if __name__ == "__main__":
main()