Path-trace a still
manfred render path-traces a recipe through a camera on the engine’s GPU tracer (hardware ray queries, adaptive sampling, a port of Intel Open Image Denoise). It stages the same parts, materials, sky, sun and lights the live renderer draws, so a render and a manfred shot of one recipe show one scene.

A final and a draft
Section titled “A final and a draft”manfred render showcase/hero.toml --camera hero --out hero.pngmanfred render showcase/hero.toml --camera hero --draft --out hero-draft.pngA final traces each pixel until its noise is under 0.01, at least 16 samples and at most 64, then denoises. --draft is a quick look at the same size: at most 12 samples, threshold 0.05, 6 first. On a Radeon RX 9060 XT a 4K final of the workshop’s hero camera takes 7.5 s and a 4K draft 2.9 s.
stdout gets the file written; stderr gets a summary:
$ manfred render desk.toml --camera main --draft --size 800x500 --out draft.pngmanfred render: 800x500, 7.3 samples a pixel on average, 12 at most of 12, threshold 0.05, seed 0: 19 submissions, the longest 5.87 ms, 31 ms on the GPUdraft.pngSamples and noise
Section titled “Samples and noise”| Flag | Default | Meaning |
|---|---|---|
--spp N |
the recipe’s [trace] spp, else 64 |
the most samples any pixel takes |
--threshold T |
the recipe’s [trace] threshold, else 0.01 |
a pixel stops once its noise is under this; 0 runs every pixel to --spp |
--min-samples N |
the recipe’s [trace] min_samples, else 16 |
samples every pixel takes before it may stop |
--seed S |
the recipe’s seed |
the tracer’s seed |
--denoise off|on |
on for .png and a master |
off writes the raw trace |
A recipe can set its own defaults:
[trace]spp = 128threshold = 0.05filter_glossy = 0.25filter_glossy and clamp_indirect tame fireflies under a small sun; the recipe has the ranges.
Formats and sizes
Section titled “Formats and sizes”--outpicks the format by its extension:.png(8-bit, dithered, through the recipe’s[look]),.exror.hdr(linear, unfinished).--master <file.png>also writes a 16-bit PNG of the same finished picture.--size WxHsets the frame (1586x992 by default);--equirectrenders the full sphere around the camera (2048x1024 by default) and--orthoan orthographic view of the camera’sortho_height.
A crop of a bigger frame
Section titled “A crop of a bigger frame”--crop x,y,w,h traces only that rectangle of the --size frame, with each pixel keeping its place in the full frame’s random stream, ray and lens:
$ manfred render desk.toml --camera main --size 800x500 --crop 200,100,200,150 --out crop.pngmanfred render: 200x150 at 200,100 of 800x500, 41.0 samples a pixel on average, 64 at most of 64, threshold 0.01, seed 0: 23 submissions, the longest 5.83 ms, 33 ms on the GPUcrop.pngWith --denoise off, or as .exr or .hdr, a crop has the full frame’s pixels exactly. Denoised, it is within a level or two: the denoiser sets its exposure from the picture it is given. A .png crop is refused when the recipe’s finish cannot be worked out on a margin (overlay text, grain, outlines).
Progress for a program
Section titled “Progress for a program”--progress json writes one JSON object a line on stderr, with a stage of stage, trace, write and done:
{"elapsed_s":0.0,"stage":"stage"}{"cap":64,"elapsed_s":0.1,"eta_s":null,"fraction":0.0,"gpu_s":0.0,"stage":"trace","threshold":0.01}{"elapsed_s":0.5,"stage":"write"}{"elapsed_s":0.5,"gpu_s":0.2,"mean_samples":37.9,"most_samples":64,"out":"final.png","stage":"done"}File formats lists every field.
The GPU queue
Section titled “The GPU queue”When pgpu is on the PATH, manfred render queues itself as a pgpu job and waits its turn; without it, it renders at once, paced the same way, so it never holds the desktop’s GPU for long. A GPU below the tracer’s floor is refused in one line, exit 1.
Same input, same picture
Section titled “Same input, same picture”The tracer reads no clock and no system randomness: the same recipe, flags and seed give the same pixels on the same GPU and driver.