Rendering
Three ways to draw a scene: the studio's own renderer in your browser, its path tracer for a finer still, and Blender Cycles on your Mac.
The stage you edit on is a live render. Everything past it is a choice between speed, quality, and where the work runs.
Open in Puni and choose a scene to open Export.
#The three tiers
| Tier | Where it runs | Good for |
|---|---|---|
| Studio raster | Your browser, or the command line's own headless Chrome | The stage, covers, quick PNGs, films |
| Path tracer | The same place, with a sample count | A finer still with soft shadows and real glass |
| Cycles | Blender on your Mac, through the local renderer | A print-quality still, a .blend file to keep working in |
The studio raster draws exactly what the stage draws, with the same evaluator, geometry and materials. The path tracer does too for every ordinary scene, but it cannot draw a stylised surface: the flat and toon skins, ink outlines, tone mapping off, flat shading. The Render view is off for such a scene and drops out of it the moment one arrives. A sample count above 0 is refused by name (STYLISED_SKIN_PATH_TRACE). Cycles receives a GLB of the sampled scene, so procedural motion is baked at the time you chose. A GLB or USDZ cannot carry a stylised surface either, so Cycles, GLB and USDZ refuse such a scene by name (STYLISED_SKIN_CYCLES, STYLISED_SKIN_GLB, STYLISED_SKIN_USDZ). Facets on a round form are geometry and export everywhere.
Hosted preview rendering is configured for PNG stills. A connected MCP client with render access calls puni_render_view. The studio can also ask the worker for a cover when a browser cannot draw. A successful worker health check alone does not establish a completed render.
#Export from the studio
Open Share → Export, or press ⌘E on Mac (Ctrl+E on Windows).
| Format | What you get |
|---|---|
| Still | A PNG of the current frame at the width you choose |
| Cycles | A high-quality still from Cycles through the local renderer |
| Film | An MP4 of the timeline: a silent film of the saved scene where the studio offers Film on Puni's film service, otherwise a film with sound through the local renderer (see Films) |
| Sound | The scene's sound over its full duration |
| 3D asset | Portable geometry and materials for web, Apple and Android |
| Project | Everything editable: objects, modules, actions, cameras, sources and checksums |
Cycles requires a successful health check of the local renderer on this computer. Start it, then reopen Export. Where the studio offers Film on Puni's film service, the service draws it from the saved revision, not this browser. Otherwise Film needs the local renderer too, and a browser that does not draw the scene in a worker. If Film is unavailable in Export, use puni render film on a computer with the local renderer.
#The local renderer
The renderer is a small service on your computer at http://127.0.0.1:4317. It needs Node 22, FFmpeg, and Blender for Cycles work. On Apple silicon its setup script installs a pinned Blender for you.
pnpm -C apps/renderer setup:blender
pnpm -C apps/renderer startIt listens on loopback only and accepts requests from Puni's own origins. Finished jobs keep their files and a receipt on disk.
#From the command line
puni render png --file scene.json --output still.png --time 1 --width 1200 --height 1200 --json
puni render png --file scene.json --output traced.png --samples 128 --camera shot --json
puni render glb --file scene.json --output scene.glb --json--samples 0 is the studio raster; 1 to 1024 uses the path tracer. --camera shot uses your authored cameras; the default is the fitted orbit view. The command needs a browser, and nothing else: no signed-in session, no running app. It uses an installed Chrome, or offers to download a Chromium once (see Render commands).
The direct-worker CLI path is for operators with their own worker, not a token copied from Settings. See Self-hosted render worker.
GIF and Video are downloads on the share page. Cycles uses the local renderer. A connected agent makes a film with puni_render_film on Puni's film service, the one the studio's Film uses where it is offered. There is no remote MCP GIF tool.
#What a render is not
scene evaluate and the agent tools' frame evaluation return numbers, not pictures. A render is the only visual proof. The command line prints the output path, its byte count and its SHA-256 so a picture can be tied to the exact document it came from.
Read Films for motion, or the render command reference for every flag.
Local Cycles requires a studio build explicitly configured with NEXT_PUBLIC_PUNI_LOCAL_RENDERER=1 and a ready local renderer. Builds without this flag do not probe your local network. A build that does not offer the hosted Film can still film through that local renderer.
Was this useful?