MiniMax H3 Post-Upscale Control V2 (LTX / Wan)
The control hub that decides the upscale pass without loading it
- cine_linx
- native_frames
- native_frames
- upscale_prompt
- stage_target_width
- stage_target_height
- duration_seconds
- upscale_seed
- sage_enabled
- wan_denoise
- selected_mode
- report
- ltx_detailer_enabled
- ltx_detailer_lora_name
- ltx_detailer_strength
- ltx_4k_enabled
- ltx_4k_quality
- ltx_seam_safe
- ltx_encode_temporal_size
- ltx_encode_temporal_overlap
- ltx_decode_temporal_size
- ltx_decode_temporal_overlap
- ltx_decode_spatial_overlap
- ltx_looper_temporal_tile_size
- ltx_looper_temporal_overlap
- ltx_looper_guiding_strength
- ltx_looper_overlap_strength
- ltx_looper_cond_image_strength
- ltx_looper_horizontal_tiles
- ltx_looper_vertical_tiles
- ltx_looper_spatial_overlap
- ltx_looper_available
After H3 renders your segment, the Shotboard can hand it to LTX 2.3 or Wan 2.2 for an upscale-and-detail pass. The Post-Upscale Control V2 is the node that figures out which pass, at what resolution, with which seed and settings - and hands those values to the real workflow branches. Crucially, it doesn't load LTX or Wan itself. That separation is the point: if upscaling is disabled, the big models never enter VRAM at all.
How it works
Give it the shot plan (cine_linx), the native frames, and a segment_index, and it resolves the plan's upscale settings into a huge list of concrete values. It computes the delivery target size (default 2x native), decides whether the LTX 4K stage kicks in, works out the upscale seed (base seed + a 10000 offset by default), and extracts every LTX knob - detailer enable/name/strength, seam-safe tiling sizes and overlaps, the temporal looper tile config, Sage attention, and the Wan denoise value. master_ready gates whether it plans for a full stitched master or just the current chunk.
The lazy contract is the same trick as the rest of the pack: the branches that do load LTX/Wan sit behind lazy inputs downstream, and the delivery router only requests them when the selected mode actually needs them. This node is the "decision" half of that arrangement; it costs almost nothing to run.
The outputs that matter
Twenty-nine outputs, so let's be honest about which few you touch:
selected_mode- "off", "ltx23", or "wan22_5b". The single most useful wire; plug it into switches that gate the LTX/Wan branches.stage_target_width/stage_target_height- what the upscale stage should produce.upscale_seed- so the upscale pass is reproducible and offset from the base render.upscale_prompt- the prompt text for the finishing pass.sage_enabled,wan_denoise,ltx_detailer_enabled/ltx_detailer_lora_name/ltx_detailer_strength- the per-pass quality controls.
The long tail (all the ltx_encode_*, ltx_decode_*, and ltx_looper_* values) exists so the real LTX branch can use plan-authored tiling without you redrawing connections. Note ltx_looper_available comes back false: the temporal-looper LTX path is incompatible with H3's audio-visual nested latents, so the pack deliberately uses the standard sampler instead.
Installing it
Part of IAMCCS-nodes (Manager, search "IAMCCS", or clone into custom_nodes). The node itself is dependency-free - it just reads the plan. The LTX/Wan branches it feeds, though, need their models and packs installed separately, or the lazy branches will be missing when you actually select them.
Gotchas
This node can't make a disabled upscale happen. If upscale_enabled is off in the plan - or master_ready is false - it reports selected_mode = "off" and hands back native-sized targets. Don't wire a Wan branch expecting it to run when the plan says off; check selected_mode. And if you change plan settings expecting the upscale to follow, remember the node reads the plan each run - the change applies on the next queue, not retroactively.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| native_frames | IMAGE | — | |
| segment_index | INT | 00–1000000 | — |
| master_readyopt | BOOLEAN | true | — |
Outputs (30)
| Name | Type | Description |
|---|---|---|
| native_frames | IMAGE | — |
| upscale_prompt | STRING | — |
| stage_target_width | INT | — |
| stage_target_height | INT | — |
| duration_seconds | FLOAT | — |
| upscale_seed | INT | — |
| sage_enabled | BOOLEAN | — |
| wan_denoise | FLOAT | — |
| selected_mode | STRING | — |
| report | STRING | — |
| ltx_detailer_enabled | BOOLEAN | — |
| ltx_detailer_lora_name | STRING | — |
| ltx_detailer_strength | FLOAT | — |
| ltx_4k_enabled | BOOLEAN | — |
| ltx_4k_quality | STRING | — |
| ltx_seam_safe | BOOLEAN | — |
| ltx_encode_temporal_size | INT | — |
| ltx_encode_temporal_overlap | INT | — |
| ltx_decode_temporal_size | INT | — |
| ltx_decode_temporal_overlap | INT | — |
| ltx_decode_spatial_overlap | INT | — |
| ltx_looper_temporal_tile_size | INT | — |
| ltx_looper_temporal_overlap | INT | — |
| ltx_looper_guiding_strength | FLOAT | — |
| ltx_looper_overlap_strength | FLOAT | — |
| ltx_looper_cond_image_strength | FLOAT | — |
| ltx_looper_horizontal_tiles | INT | — |
| ltx_looper_vertical_tiles | INT | — |
| ltx_looper_spatial_overlap | INT | — |
| ltx_looper_available | BOOLEAN | — |