LTXShotUpscaler now ONLY does latent upscale (tiny model).
New LTXShotRefiner handles second pass sampling (main model).
This gives ComfyUI 3 separate execution steps:
1. LTXShotRenderer → main model loaded, then offloaded
2. LTXShotUpscaler → upscale model loaded (~200MB), then offloaded
3. LTXShotRefiner → main model reloaded for refinement
Matches how the original workflow manages VRAM across nodes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Let ComfyUI use defaults from INPUT_TYPES instead of guessing
the widget value order which varies by frontend version.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ComfyUI frontend injects a hidden 'control_after_generate' widget
after every INT seed field. Widget values must include this or
all subsequent values shift by one position.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
frame_rate has a default value so ComfyUI stores it as a widget
even when linked. Must be included in widgets_values array.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Full pipeline:
LTXDirector → LTXShotRenderer → LTXShotUpscaler
→ VAEDecode → RTXVideoSuperResolution (1.3x, HIGH)
→ VHS_VideoCombine (h264-mp4, crf 14, with audio)
Also fixed audio VAE link to AudioDecode and frame_rate
link to VideoCombine.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The all-in-one node OOMs because ComfyUI can't offload models
between steps within a single execute(). Split into two nodes:
- LTXShotRenderer: first pass (conditioning + guide + sample + crop)
Outputs: video_latent, audio_latent, positive, negative
- LTXShotUpscaler: second pass (upscale + guide + sample + crop)
Takes conditioning from first pass, allows ComfyUI to offload
the main model before loading the upscale model.
Shared helpers extracted as module-level functions.
Updated example workflow to show the two-node chain.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LTX Director always uses cfg=1 (zeroed negative conditioning) and
first pass is always full generation (denoise=1.0). Only the upscale
pass has a configurable denoise (default 0.42).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>