Pick a sensor rig
Schematic and 3D renders look through a rig: the cameras on the vehicle. Without--rig they use the basic-dash-camera rig on the ego, a front camera at the preset’s capture (1280x720 at 24 fps for the default showcase); write your own to choose others.
rig init writes the cameras at the --profile capture: showcase (1280x720 at 24 fps) unless you pass --profile training (512x384 at 20 fps). The basic dash camera’s camera is dashcam-front. Other presets include alpamayo-2cam, alpamayo-6cam, tesla-hw3 and waymo-5th-gen; simforge rig init --help lists them all, and the vehicle classes.
Preview a frame
Render
--out is a folder that must not exist or be empty. 3D renders take --preset showcase or --preset training (the dataset look at a fixed cost per frame); without --preset, a 3D render uses showcase, locally and with --cloud. They also take --passes to choose among rgb, id, depth and semantic.
GPU memory and texture tiers
GPU memory depends on the source texture tier, the material texture limit and the camera rig. The local CLI still selects a full-chain source (uastc-full) on GPUs with at least 16 GiB, or a preprocessed 512 px source (bc7-512) below that, and records the choice in localDefaults. --textures overrides the source tier. On Apple silicon the budget is three quarters of system memory.
Material textures now have a default maximum dimension of 1024 px, including map, vehicle, pedestrian and prop textures. This is an intentional fine-detail softening to reduce GPU memory; it does not change camera resolution, geometry or sensor cadence. The limit is an upper bound, not an upscale: a 512 px source stays 512 px, and normal mip planning may choose smaller textures.
Base-color textures whose alpha controls cutouts or transparency keep their normal mip selection instead of the size cap, preserving fence openings and foliage coverage. The exception uses actual source alpha; an opaque texture is not exempt just because its material is labelled MASK or BLEND.
Environment plates keep their authored resolution: reducing the star map to 1024 px removed fine night-sky detail. The material cap does not resize sky/moon plates, render targets or sensor buffers.
Set render.set.textureMaxSize to 1024, 2048, 4096 or "full" in an authored scenario, or pass --set textureMaxSize=... to the CLI. "full" removes this limit while preserving normal mip/residency planning. To recover full source detail on a machine that otherwise selects the 512 px tier, set both:
textureMaxSize=full); they are not measurements of the new 1024 px default.
Peak GPU memory of one 3D render (showcase preset, one 1280x720 camera unless stated):
The training preset needs about the same; a schematic render needs 0.2 GiB. Measured on an RTX 5080 (driver 595.84). The machine-readable table is
sdk/contracts/runtime-support.v1.json in the toolkit.
Output format
A 3D render writes:
Ticks count from the clip start at the rig’s frame rate. Lidar sources write
<sensor>/<tick:08>.ply and radar sources .csv. A 2D render writes render.json and video/topdown.mp4. Traces are identical on every machine; pixels are identical run to run on the same GPU model and driver, and differ slightly between GPUs.
Without ffmpeg, a 2D render that requests video preserves its images under frames/topdown/<index:08>.png and reports that directory in frame.directory; it warns that no video was encoded. --video off remains a render-and-measure operation without retained frames.
Before you render
Check the GPU withsimforge doctor and the runtime’s render modes with simforge runtime status. A render that cannot run on this machine fails with a named error; it never falls back to another device or to the cloud. A scene that does not fit in GPU memory fails with native_gpu_out_of_memory: use --textures bc7-512, fewer or smaller cameras, or --cloud. A 3D render whose GPU memory cannot be measured warns gpu_memory_unmeasured; --vram-budget sets the budget explicitly.
Render in the cloud
The same command runs on SimForge’s machines with--cloud and a cost cap in cents:
render.json, results.json, manifest.json, observed-frames.jsonl, parity.json when present, and runtime-info.json). A cloud render draws only the RGB camera pass; its captured per-frame RGB, lidar and radar files are intermediate outputs and are not uploaded. A requested still preview retains its final RGB images instead of videos. The cloud results.json inventory lists only published files, so every listed capture is downloadable. The local renderer’s diagnostic job/ directory is not exported in full; its authoritative job/timeline.json is included.
See Run in the cloud for pricing, caps and following a run.