LTX Shot Refiner
The second pass that saves your LTX Director shot
- model
- positive
- negative
- video_latent
- audio_latent
- guide_data
- vae
- video_latent
- audio_latent
LTXShotRefiner is the cleanup pass at the end of the yic03685/ComfyUI-LTXShotRenderer chain - the node that takes your renderer's first draft, now upscaled 2x in latent space, and makes it actually good. In the stock LTX Director workflow it replaces a second DirGuide2 → ConcatAV → Sampler → SeparateAV → CropGuides run, which is the fiddliest stretch of the whole chain. This packs all of it into one box.
It's the third and last node in the pack, and it's where the "shot" in the pack's name actually comes together. The pattern it implements is the two-pass LTX standard: the renderer samples at full denoise to lay down structure, then the refiner re-applies the Director's keyframes and runs a partial denoise pass to sharpen details at the higher resolution. LTX 2.3's known weakness is soft detail, especially when you've upscaled - this pass is the fix.
How it works
Mechanically it's a mirror of the renderer: it encodes the guide images back into keyframes (LTXVAddGuide), concatenates the video and audio latents, samples, separates, and crops the keyframes off again. The difference is the denoise dial. Instead of a full regeneration, it runs at the default 0.42 - meaning it reworks just under half the noise, re-drawing edges and texture while the underlying composition stays put. That's why it's cheap: steps defaults to 4, because you only need a handful of steps to finesse, not to invent.
It does not build its own negative conditioning - it takes positive and negative straight from LTXShotRenderer. That's the entire reason the renderer outputs them. If you wire this node up without those two wires, you're running blind-ish; connect them.
The inputs that matter
- denoise (default 0.42) - the one knob you'll actually touch. Too low and the pass does nothing; push toward 0.6–0.7 and the upscaled draft gets reshaped more aggressively (helpful when the renderer's motion was mushy, riskier for identity drift).
- steps (default 4) - a partial-denoise pass doesn't need many. 4–8 with the distilled LoRA is the zone.
- guide_strength (default 1.0, note it starts higher than the renderer's 0.5) - the keyframes re-applied at full force here so the second pass doesn't wander off the Director's timeline.
- model, video_latent (from the upscaler), audio_latent (passthrough from the renderer), guide_data and vae (from Director and your video VAE), seed, sampler_name, scheduler.
Outputs are just video_latent and audio_latent, which you feed to VAEDecode and LTXVAudioVAEDecode (then VHS or similar to mux). If you're following the pack's example workflow, the refiner's video goes straight into a plain VAEDecode and its audio into LTXVAudioVAEDecode - two separate decoders, because LTX 2.3 keeps audio and video latents in separate spaces with separate VAEs.
Install and gotchas
Same as the rest of the pack: git clone https://github.com/yic03685/ComfyUI-LTXShotRenderer into custom_nodes (or ComfyUI Manager → search "LTXShotRenderer"), restart. No dependencies beyond a current ComfyUI with native LTX support, and no models to download that you don't already need for LTX 2.3.
The usual pack-level traps apply: the README is stale copy-paste describing a different pack, and you need WhatDreamsCost's LTXDirector node installed because it's the only producer of the GUIDE_DATA input. One refiner-specific tip from the LTX community: if you're using the distilled LoRA, strength 0.4 on the renderer pass and 0.5 here is a solid pairing. The example workflow just runs one LoRA loader at 0.5 into both - fine - but the split-strength version is where the quality actually lands.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| video_latent | LATENT | — | |
| audio_latent | LATENT | — | |
| guide_data | GUIDE_DATA | — | |
| vae | VAE | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 41–50 | — |
| denoise | FLOAT | 0.420–1 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| guide_strength | FLOAT | 1.000–2 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_latent | LATENT | — |
| audio_latent | LATENT | — |