The Show
| Show code | THS |
|---|---|
| Format | Episodic television series — full CG, no live-action plates |
| Current deliverable | Teaser trailer — proof of concept |
| Current phase | Pre-Production / Crew Assembly |
| Season count | To be lockedOpen |
| Episode count | To be lockedOpen |
| Per-episode runtime | To be lockedOpen |
There is no live-action plate photography on this production. Every frame originates in Unreal Engine. plates/ exists in the shot tree as a reserved folder and is not active. The plate-dependent departments — mm (Matchmove), ra (Rotoanim) and roto (Rotoscoping) — are not active on Thresholds. Camera solve is not a department here; the camera comes from Jetset virtual-camera takes via Live Link into UE5 and lands in lay/.
Picture
| Delivery master resolution | 3840 × 2160 (UHD) |
|---|---|
| Final render resolution | 3840 × 2160 (UHD) |
| Temp / WIP render resolution | 1920 × 1080 (Full HD) — iteration only, never a deliverable |
| Active image area | 3840 × 2160 — full raster, no letterbox, no matte |
| Aspect ratio | 16:9 (1.78:1) |
| Pixel aspect ratio | 1.0 (square) |
| Scan type | Progressive |
| Frame rate | 24.000 fps — true 24, non-drop. Not 23.976. |
| Timecode | Non-drop @ 24 fps. First frame of programme 01:00:00:00. |
| Frame numbering | 4-digit minimum, sequences start at 1001 |
Why UHD. Streamer VFX specifications require an intended active image area of at least UHD — 3840 pixels wide. Thresholds is full CG in Unreal Engine, so rendering at UHD costs render time and nothing else: there is no plate to re-scan and no camera negative to go back to. Downres is always possible. Upres is not.
Why a 1080 temp resolution. Iteration is where render time is actually spent — lighting look, animation blocking, FX tuning, dailies. Full HD is exactly half UHD in both axes, so a temp render is a clean 2:1 integer downscale: identical framing, identical composition, no resampling artefacts and no reframing risk when the shot goes final. Roughly a quarter of the pixels, and therefore roughly a quarter of the render time per iteration.
1080 is never a deliverable. Temp renders exist to make a creative decision and are thrown away. Anything that leaves the show — master, archive, client review, anything downstream of shot approval — is rendered at UHD. There is no upres step in this pipeline and none is sanctioned: a shot delivered from a 1080 render is a re-render, not a fix.
Why true 24, not 23.976. It is cinema-native, the timecode math is clean, and it matches UE5 Sequencer and DCP. If a future NTSC-derived broadcast chain requires 23.976, that is a conform decision at delivery, not a production decision. Do not render at 23.976.
Color
| Config | Official ACES 1.2 OCIO config — mandatory in every tool, installed before your first scene |
|---|---|
| Working space | ACEScg (linear) |
| Viewing transform | ACES RRT + sRGB ODT (or display-appropriate ODT) |
| Texture authoring | ACES color space via Substance Painter |
| DaVinci Resolve | Input ACEScg linear, working space ACES, output display-appropriate ODT |
Never bake a display transform into the composite. Apply it for viewing only. A comp that leaves Nuke with an ODT baked in is unusable downstream and will be sent back.
Never work outside ACES unless instructed by the VFX Supervisor.
Image Formats
| Stage | Specification |
|---|---|
| Unreal Engine render output | EXR sequence — 16-bit half float minimum, 32-bit for close-up / hero shots. ACEScg linear. 3840 × 2160 @ 24 fps. |
| Nuke composite output | EXR sequence — 16-bit half float minimum. ACEScg linear, no display transform baked in. 3840 × 2160 @ 24 fps. |
| Required AOVs (minimum) | beauty char env fx depth mvdepth (Z) and mv (motion vectors) are required, not optional — see the note below. Additional passes per shot with VFX Supervisor approval. |
| Frame handles | 8 frames minimum — head and tail, every shot and every cache. |
| Render output naming | SEQXXX_shXXXX_<pass>.<frame>.exrNo THS_ prefix on shot files. See Naming Conventions. |
Depth of field and motion blur are applied in Nuke, not in-engine. Nuke's ZDefocus needs a Z-depth channel to defocus by distance, and VectorBlur needs motion vectors — without them Nuke falls back to optical-flow estimation, which breaks on exactly the fast Jetset virtual-camera moves this show is built around.
A four-pass render cannot execute the comp structure the pipeline specifies. These two passes are cheap to render and expensive to retrofit: a missing pass means re-rendering the shot.
Deliverables
THS_ prefix and live in delivery/{client_review,final,archive}/.
| Purpose | Format, resolution and color |
|---|---|
| Mastering | ProRes 4444 — 3840 × 2160 @ 24 fps, ACES metadata preserved. → delivery/final/ |
| Archive | EXR sequence — 3840 × 2160 @ 24 fps, linear ACEScg, full ACES metadata. → delivery/archive/ |
| Review / dailies | H.264 or H.265 — 3840 × 2160 @ 24 fps, sRGB display transform applied. → delivery/client_review/ |
| Naming | THS_<Deliverable>_v<NNN>_YYYY-MM-DD.<ext>e.g. THS_Teaser_v003_2026-08-01.mov |
The color pipeline is ACES linear end to end, so EXR is the only image-sequence format in use. DPX exists for camera-log workflows — Thresholds has no camera. If someone asks you for DPX, escalate to the VFX Supervisor rather than converting.
Audio
| Sample rate | 48 kHz |
|---|---|
| Bit depth | 24-bit |
| Channel layout (teaser) | Stereo |
| Series specification | To be lockedOpen 5.1 printmaster, M&E stems, discrete stems, loudness target. |
Audio must be laid against the 24.000 fps non-drop timeline. Do not conform audio at 23.976 — the picture is true 24 and the two will drift.
Open Decisions
editorial/ holds three fixed names and there is no episode tier above sequences/. It must be designed before any episode-scoped work starts — retrofitting it means migrating the whole Drive.2026-07-30 by the VFX Supervisor. Do not deviate without written sign-off.