Files
2026-10-31 17:03:41 +01:00

42 lines
1.7 KiB
Python

"""Verify custom settings, preset overrides and PNG dimensions inside UE."""
import struct
import unreal
from ue_workshop import Renderer, render
from ue_workshop.paths import PROJECT
for kwargs in ({"width": 0}, {"height": -1}, {"samples": 0}, {"warmup": -1}, {"width": 1.5}, {"samples": True}):
try:
Renderer(**kwargs)
except ValueError:
pass
else:
raise AssertionError(f"Accepted invalid settings: {kwargs}")
preset = Renderer.from_preset("final", width=800)
assert (preset.width, preset.height, preset.samples, preset.warmup) == (800, 720, 4, 32)
code = (PROJECT / "exercises/my_shot.py").read_text(encoding="utf-8")
code = code.replace('Scene("MyShot")', 'Scene("RendererSmoke")')
code = code.replace('materials.color("Character"', 'materials.color("RendererSmokeCharacter"')
code = code.replace('materials.color("Floor"', 'materials.color("RendererSmokeFloor"')
namespace = {"__name__": "__main__"}
exec(compile(code.replace("RENDER = True", "RENDER = False"), "my_shot.py", "exec"), namespace)
renderer = Renderer(width=320, height=180, samples=2, warmup=0)
output = renderer.render(namespace["shot"], single_frame=24)
config = render._active["queue"].get_jobs()[0].get_configuration()
aa = config.find_setting_by_class(unreal.MoviePipelineAntiAliasingSetting)
assert aa.spatial_sample_count == 2
assert aa.engine_warm_up_count == 0
def verify(executor, success):
if not success:
return
frames = list((output / "frames").glob("*.png"))
assert len(frames) == 1
assert struct.unpack(">II", frames[0].read_bytes()[16:24]) == (320, 180)
unreal.log("[Workshop] Custom renderer: PNG dimensions 320x180 verified.")
render._active["executor"].on_executor_finished_delegate.add_callable_unique(verify)