Part of overall "improve image filtering situation" (#116980), this PR addresses two issues: - Bilinear (default) image filtering makes half a source pixel wide transparent border around the image. This is very noticeable when scaling images/movies up in VSE. However, when there is no scaling up but you have slightly rotated image, this creates a "somewhat nice" anti-aliasing around the edge. - The other filtering kinds (e.g. cubic) do not have this behavior. So they do not create unexpected transparency when scaling up (yay), however for slightly rotated images the edge is "jagged" (oh no). More detail and images in PR. Pull Request: https://projects.blender.org/blender/blender/pulls/117717
66 lines
1.6 KiB
Python
66 lines
1.6 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
|
|
|
|
|
|
def get_arguments(filepath, output_filepath):
|
|
dirname = os.path.dirname(filepath)
|
|
basedir = os.path.dirname(dirname)
|
|
|
|
args = [
|
|
"--background",
|
|
"-noaudio",
|
|
"--factory-startup",
|
|
"--enable-autoexec",
|
|
"--debug-memory",
|
|
"--debug-exit-on-error",
|
|
filepath,
|
|
"-o", output_filepath,
|
|
"-f", "1",
|
|
"-F", "PNG"]
|
|
|
|
return args
|
|
|
|
|
|
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("-oiiotool", nargs=1)
|
|
parser.add_argument('--batch', default=False, action='store_true')
|
|
return parser
|
|
|
|
|
|
def main():
|
|
parser = create_argparse()
|
|
args = parser.parse_args()
|
|
|
|
blender = args.blender[0]
|
|
test_dir = args.testdir[0]
|
|
oiiotool = args.oiiotool[0]
|
|
output_dir = args.outdir[0]
|
|
|
|
from modules import render_report
|
|
report = render_report.Report("Sequencer", output_dir, oiiotool)
|
|
report.set_pixelated(True)
|
|
# default error tolerances are quite large, lower them
|
|
report.set_fail_threshold(1.0 / 255.0)
|
|
report.set_fail_percent(0.01)
|
|
report.set_reference_dir("reference")
|
|
|
|
test_dir_name = Path(test_dir).name
|
|
ok = report.run(test_dir, blender, get_arguments, batch=args.batch)
|
|
|
|
sys.exit(not ok)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|