A late-night coin laundry, built from a reference and rendered on CPU
Proof that the pipeline works end to end: reference → layout → blockout → detail →
one shared procedural weathering group → practical lighting → shot list → frames → encode.
Not a finished shot. A working factory with a known quality gap.
Motion test — 1 second, 24 fps
480×270, 14 samples. Slow dolly forward, one fluorescent cutting in and out,
two drums turning. Frame-to-frame delta averaged 4.4 with no static pair, so the motion is real —
this is not a still with a pan.
Lookdev still — 960×540
28 samples. The blockout, weathered materials and practicals are in place.
Independent critique scored it 4.5/10 as a photograph — fair, and the reasons are all
layer detail, not missing capability.
What is actually verified
Scene builds and renders headless from Python; no GUI, no manual steps.
One weathering node group drives edge wear, gap grime, top dust, floor dirt and drips across every material, each at its own strength.
Print signage is designed in 2D, aged, and mapped onto UV quads — real type, never 3D text.
Shot renderer reads a JSON spec, renders resumable frames, grades and encodes h264.
EEVEE cannot run in this container — no GPU, no EGL surface, it aborts on
context creation. Cycles on 4 CPU cores is the only engine. A real interior costs about 3.3×
more per pixel-sample than a box test, which puts production 1080p at roughly
13 minutes per frame — 5.4 hours per second of footage.
720p · 16 samples
~1.5 min/frame · 36 min per second
1080p · 64 samples
~13 min/frame · 5.4 hours per second
Rented 4090, 1080p
roughly 20–60× faster · a 10 s shot in 1–2 hours
Gap to the reference
The result in the original thread is many hours of layering on top of this exact
structure: per-unit wear variation, props and clutter, dust, print materials everywhere, and a
lighting contrast pass. The structure was the missing part and it now exists.
What remains is detail budget — which is a render-time question, not a capability question.