mirror of
https://github.com/blender/blender.git
synced 2025-08-02 23:39:26 +00:00

HDR video files are properly read into Blender, and can be rendered out of Blender. HDR video reading / decoding: - Two flavors of HDR are recognized, based on color related video metadata: "PQ" (Rec.2100 Perceptual Quantizer, aka SMPTE 2084) and "HLG" (Rec.2100 Hybrid-Log-Gamma, aka ARIB STD B67). Both are read effectively into floating point images, and their color space transformations are done through OpenColorIO. - The OCIO config shipped in Blender has been extended to contain Rec.2100-PQ and Rec.2100-HLG color spaces. - Note that if you already had a HDR video in sequencer or movie clip, it would have looked "incorrect" previously, and it will continue to look incorrect, since it already has "wrong" color space assigned to it. Either re-add it (which should assign the correct color space), or manually change the color space to PQ or HLG one as needed. HDR video writing / encoding" - For H.265 and AV1 the video encoding options now display the HDR mode. Similar to reading, there are PQ and HLG HDR mode options. - Reference white is assumed to be 100 nits. - YUV uses "full" ("PC/jpeg") color range. - No mastering display metadata is written into the video file, since generally that information is not known inside Blender. More details and screenshots in the PR. Co-authored-by: Sergey Sharybin <sergey@blender.org> Pull Request: https://projects.blender.org/blender/blender/pulls/120033
69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
#!/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",
|
|
"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()
|