Atlas matrixZone Split 🔲
Getting an 8K plate through a 22B video model
- image
- clips
- matrixzone
- report
The LTX-2.5 SDR→HDR IC-LoRA runs at whatever size it's fed - more or less. Feed it an 8K plate and you don't get a refusal, you get a 22B video model doing something unwise. In practice the HDR used to come out around 1280 px wide, which is a preview, not a deliverable plate.
Atlas matrixZone Split 🔲 is the front half of the fix: the plate is cut into exact crops at sizes the model was trained on, converted zone by zone, and reassembled by the stitch node at full plate resolution.
What "matrixZone" means here
It's a planner, not a grid slicer. The pack ports atlas_bridge.matrixzone.plan and pins it to its worked numbers - a padded 128-clean render, one 64-clean zone size, interior overlap of at least 128 px on a UHD 2x2 - so the ComfyUI version and the original can't drift apart. Zones come out already padded so the model never sees a hard crop edge as its own picture edge.
The output is a LIST and that matters. Element 0 is the whole padded render at a quarter linear resolution - the radiance anchor - followed by the zones. Wire that list straight into the LTX SDR→HDR chain and it runs once per element.
Inputs and outputs
Required: image - the full-resolution SDR plate.
Optional: grid_cols (2) and grid_rows (2), both 1–8; overlap_min_px (64, step 8) - minimum interior overlap per seam, where the 64-clean zone size usually gives you more than that (128 on UHD 8K 2x2); mode (per_zone_clip by default, or zones_as_frames); clip_frames (9, step 8).
clip_frames is not a free number: it's 8k+1, so 1, 9, 17 … up to 97. The global anchor clip uses the same count as the zones. In per_zone_clip each zone becomes its own clip for the chain to chew through; zones_as_frames instead lays the zones out as ONE serpentine, ping-ponged sequence, which is how you keep one video-model call if per-zone clips are awkward in your graph.
Outputs: clips (IMAGE, is a list - this goes to the LTX chain), matrixzone (goes to AtlasMatrixZoneStitch), report.
Install
cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git
Or Manager → atlas-camera (ComfyUI Registry). Restart. No pip step for this node - the planning lives in core/matrixzone.py and is numpy-level work.
The lane is the heavy part, and none of it is pip:
- ComfyUI V135 or later.
- LTX-2.5 model files:
ltx-2.5-22b-distilled-transformer-bf16.safetensors(UNETLoader),ltx-2.5-22b-ic-lora-sdr-to-hdr-1.0.safetensors(LTXICLoRALoaderModelOnly),ltx-2.5-22b-ic-lora-sdr-to-hdr-scene-emb.safetensors(LTXVLoadConditioning),ltx-2.5-video-vae-conv-bf16.safetensorsandltx-2.5-audio-vae-bf16.safetensors(VAELoader). - If the
LTXV*nodes load red, install ComfyUI-LTXVideo - and mind the kornia cap. Installing Atlas's[neural]extra pulls GeoCalib, which declares an unpinned kornia; kornia 0.8.3 dropped apadre-export that ComfyUI-LTXVideo imports by name, and LTXVideo then fails to load entirely with nothing pointing at Atlas. Pinkornia<0.8.3and both packs coexist.
Two real numbers from the pack's own docs, so you can budget: the still workflow at 2x2 on the 4K tier fits a 32 GB GPU on an 8K plate and runs in about 14.5 minutes cold. On a smaller card, drop to 4x4 (1080p-tier zones) and expect roughly 23 minutes - smaller zones are slower, not faster, because there are four times as many of them.
Traps
The one that catches everyone is the list. clips is an IMAGE list, and a node expecting a single IMAGE will either error or quietly take element 0 - which is your quarter-res anchor pass, the wrong picture entirely. Check what's downstream before you assume the split failed.
Also: don't resize the zones between split and stitch. The stitch crops its padding back on the assumption that the zone geometry is what the planner emitted, and it refuses rather than stitching around a hole.
Licence, since this drives a commercial model: LTX-2.x is the LTX-2 Community License, free for commercial use by an organisation under US$10M annual revenue - aggregated across affiliates - with a paid licence mandatory above that. Not Apache 2.0, whatever the thread you read said.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | The full-resolution SDR plate. | |
| grid_colsopt | INT | 21–8 | — |
| grid_rowsopt | INT | 21–8 | — |
| overlap_min_pxopt | INT | 640–512 | Minimum interior overlap per seam; the 64-clean zone size usually gives more (128 on UHD 8K 2x2). |
| modeopt | COMBO | per_zone_clip | 2 options: per_zone_clip, zones_as_frames |
| clip_framesopt | INT | 91–97 | per_zone_clip: frames per zone clip (8k+1). The global clip uses the same count. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| clips | IMAGE | — |
| matrixzone | ATLAS_MATRIXZONE | — |
| report | STRING | — |