Skip to content

render/blender@1

One frame of a .blend file in, one PNG out, rendered by Blender 4.2 with Cycles on the node’s GPU through CUDA. If Cycles finds no GPU, the unit fails rather than render on the CPU.

One frame of up to 1280x720 at up to 64 samples (the defaults). A unit above either fails with the reason. The scene’s own settings apply otherwise (camera, lights, materials, denoising); the unit sets the frame, the resolution at 100 %, the samples, Cycles and PNG output.

Only the .blend file is downloaded, so pack everything it uses into it (File > External Data > Pack Resources): a texture or linked library left outside the file is missing from the render. A frame costs the same whatever the scene, and must render within the unit’s hour.

Field Required Meaning
url yes an http or https address the worker downloads the .blend file from, or the key of a file your org uploaded (unitfabric upload, or POST /v1/uploads with "kind": "input"), which the node fetches before the worker begins the unit, so the worker reads it as a file under /in; anything else is refused when you submit
frame no the frame to render; 1 by default
width, height no 1280x720 by default, and at most that
samples no 64 by default, and at most that
unit_id no your name for the unit: 1 to 64 letters, digits, ., _ or -, starting with a letter or digit; its results are stored under it. By default units are numbered by line: 000000, 000001, …

frames.jsonl, one line per frame:

{"unit_id": "f0001", "url": "https://example.com/shots/sh010.blend", "frame": 1}
{"unit_id": "f0002", "url": "https://example.com/shots/sh010.blend", "frame": 2}
{"unit_id": "f0003", "url": "https://example.com/shots/sh010.blend", "frame": 3, "samples": 64}

job.yaml:

name: sh010 frames
template: render/blender@1
input: frames.jsonl

frame_0001.png (the frame number, zero-padded to at least four digits) for each unit. Each unit’s directory also holds done.json: {"unit_id": ..., "artifacts": ["frame_0001.png"], "seconds": ...}.

  • A GPU with at least 16 GB of memory, 8 CPUs, 16 GB of memory and 50 GB of scratch disk.
  • 3,600 s per unit. A unit still running then is stopped and tried again, up to the job’s attempts (unit.max_attempts: 3 by default, 1 to 10), and a unit that never completes is not billed.
  • A URL the worker downloads is at most 4 GiB and must come within 1,800 s (half the unit’s time), with no 60 s stretch without data, through our gateway, which allows ports 80 and 443 only. An uploaded file is fetched by the node itself before the unit begins, not through the gateway, within 3,600 s that are not the unit’s, and is held to the same 4 GiB.
  • Checkpointing is off: a unit cut short by a node failure starts again from the beginning, and is billed once.
  • A manifest line is at most 65,536 characters and a manifest at most 32 MiB.

Price per unit: see pricing.

The price is measured on Classroom (Christophe Seux, Blender demo files, CC0) at the unit’s defaults (1280x720, 64 samples, frames 1 to 3), on each GPU class in the fleet. The timings are measured on GPU hosts at launch.