"""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)