Expose and package temporal rendering with guarded edge history
Native and manual checks / native (ubuntu-24.04) (push) Failing after 37s
Native and manual checks / manual (push) Successful in 27s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s
Native and manual checks / native (windows-2025) (push) Canceled after 0s
Native and manual checks / native (ubuntu-24.04) (push) Failing after 37s
Native and manual checks / manual (push) Successful in 27s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s
Native and manual checks / native (windows-2025) (push) Canceled after 0s
This commit is contained in:
@@ -45,6 +45,44 @@ with tempfile.TemporaryDirectory(prefix="faset-player-diagnostics-") as temporar
|
||||
lighting["effective_sun_cascades"] == 0 and \
|
||||
lighting["local_shadow_faces"] == 0, lighting
|
||||
|
||||
for temporal_mode, scale in [("off", None), ("taa", None), ("upscale", "0.67")]:
|
||||
temporal_profile = root / f"temporal-{temporal_mode}.json"
|
||||
arguments = [sys.argv[1], "--scene", str(scene), "--headless", "--frames", "2",
|
||||
"--temporal", temporal_mode, "--profile", str(temporal_profile)]
|
||||
if scale is not None:
|
||||
arguments += ["--render-scale", scale]
|
||||
selected = subprocess.run(arguments, capture_output=True, text=True,
|
||||
encoding="utf-8", timeout=30)
|
||||
assert selected.returncode == 0, (temporal_mode, selected.stdout, selected.stderr)
|
||||
temporal_report = json.loads(temporal_profile.read_text(encoding="utf-8"))
|
||||
assert temporal_report["temporal_mode"] == temporal_mode, temporal_report
|
||||
assert abs(temporal_report["render_scale"] -
|
||||
(float(scale) if scale else 1.0)) < 0.000001
|
||||
assert temporal_report["effective_temporal_mode"] == temporal_mode, temporal_report
|
||||
for sample in temporal_report["samples"]:
|
||||
for key in ["requested_temporal_mode", "effective_temporal_mode",
|
||||
"temporal_fallback_reason", "temporal_reset_reason",
|
||||
"temporal_history_valid", "temporal_internal_width",
|
||||
"temporal_internal_height", "temporal_jitter",
|
||||
"gpu_temporal_resolve_ms", "gpu_temporal_composite_ms", "gpu_ui_ms"]:
|
||||
assert key in sample, (key, sample)
|
||||
assert sample["effective_temporal_mode"] == temporal_mode, sample
|
||||
if temporal_mode != "off":
|
||||
assert sample["temporal_internal_width"] > 0, sample
|
||||
assert sample["temporal_internal_height"] > 0, sample
|
||||
assert sample["gpu_temporal_resolve_ms"] is not None, sample
|
||||
if temporal_mode != "off":
|
||||
assert not temporal_report["samples"][0]["temporal_history_valid"]
|
||||
assert temporal_report["samples"][1]["temporal_history_valid"]
|
||||
|
||||
for invalid in [["--temporal", "missing"], ["--render-scale", "NaN"],
|
||||
["--temporal", "taa", "--render-scale", "0.67"],
|
||||
["--temporal", "upscale", "--render-scale", "1.0"]]:
|
||||
result = subprocess.run([sys.argv[1], *invalid], capture_output=True,
|
||||
text=True, encoding="utf-8", timeout=20)
|
||||
assert result.returncode != 0 and ("temporal" in result.stderr.lower() or
|
||||
"scale" in result.stderr.lower()), result
|
||||
|
||||
# The same linked v2 schema must validate without registering or invoking behavior.
|
||||
validated = subprocess.run([sys.argv[1], "--scene", str(scene), "--validate"],
|
||||
capture_output=True, text=True, encoding="utf-8", timeout=20)
|
||||
|
||||
Reference in New Issue
Block a user