LTX Shot Renderer
The node that deletes 7 steps from your LTX Director workflow
- model
- positive
- video_latent
- audio_latent
- guide_data
- vae
- video_latent
- audio_latent
- positive
- negative
If you've loaded an LTX Director workflow and stared at the 15-node wall between the timeline and the decode, this is the node that deletes most of it. LTXShotRenderer is the first - and by far the biggest - of three nodes in the yic03685/ComfyUI-LTXShotRenderer pack that collapse the entire first sampling stage into one box.
Let's be clear about what this pack is before you install it. It's a personal utility by a single author ("Yi"), with one commit, and it exists for one reason: the stock LTX Director chain - LTXDirectorGuide → ConcatAV → Guider → Scheduler → Sampler → SeparateAV → CropGuides - is a lot of nodes to keep on screen. This pack replaces all of that with LTXShotRenderer → LTXShotUpscaler → LTXShotRefiner. One commit, zero community footprint, and honestly it works fine for what it is. The example workflow is built for LTX 2.3 with the fp8 model, the Gemma 3 text encoder, and the split audio/video VAEs.
How it works
Wire it directly off an LTXDirector node (from WhatDreamsCost's pack - more on that below) and it does the whole first pass internally: zeroes out the positive conditioning to build the negative (the ConditioningZeroOut trick), stamps the frame_rate into the conditioning, encodes your guide images into keyframes via ComfyUI's native LTXVAddGuide, concatenates the audio and video latents into one nested tensor, runs a full-denoise sample, separates them again, and crops the guide keyframes back off. In, out, done.
The output that trips people up: it also hands you back positive and negative conditioning. Those aren't for decoration - the refiner node in this pack needs them, because it re-applies the guides on the second pass. If you're building the workflow by hand, don't drop those wires.
The inputs that matter
- steps (default 14) - this is a full first pass at denoise 1.0, so with the distilled LoRA you want 8–14, not 40.
- sampler_name / scheduler - the usual suspects. The community's LTX sweet spot is euler or ddim_uniform with the
simpleorsgm_uniformscheduler; the defaults here are sensible. - guide_strength (default 0.5) - how hard the Director's keyframes bite. Crank it toward 1 if your shots drift off their start frame, back off if motion gets stiff.
- frame_rate (default 24) - wired straight from Director in the example, usually best left connected.
The other inputs (model, positive, video_latent, audio_latent, guide_data, vae, seed) are all just "connect what the Director gives you." guide_data is the GUIDE_DATA wire from Director - that's the timeline, the keyframes, the whole point of the workflow.
Outputs: video_latent and audio_latent (feed the upscaler), plus positive/negative (feed the refiner).
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/yic03685/ComfyUI-LTXShotRenderer
Then restart ComfyUI. Or just search "LTXShotRenderer" in ComfyUI Manager and install from there. There's no requirements.txt - the pack leans entirely on ComfyUI core's native LTX support (comfy_extras.nodes_lt), so it needs a current ComfyUI but nothing extra to pip install. It also doesn't download any models; the 2.3 weights, Gemma encoder, dual VAEs, distilled LoRA and spatial upscaler are all standard downloads you already need for LTX 2.3.
Where people get burned
The README is stale - it's titled ComfyUI-LTXDirectorSimple and describes a different pack with a LTXDirectorSampler node that doesn't exist here. Trust the code, not the README. The other real gotcha: this pack assumes you already have LTXDirector (WhatDreamsCost's nodes) installed, because that's the only producer of GUIDE_DATA. Clone this alone and you'll have three orphaned nodes with nothing to feed them.
One design note worth respecting: the three nodes are deliberately separate so ComfyUI can offload the ~24GB main model between passes. It's tempting to fuse them - don't. The split is the VRAM management.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| video_latent | LATENT | — | |
| audio_latent | LATENT | — | |
| guide_data | GUIDE_DATA | — | |
| vae | VAE | — | |
| frame_rate | FLOAT | 24.01–120 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 141–100 | — |
| 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 | 0.500–2 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video_latent | LATENT | — |
| audio_latent | LATENT | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |