Nodes/ComfyUI-PainterLTXV2/Painter LTX2V Plus
ComfyUI Node

Painter LTX2V Plus

The same LTX latent prep, plus upscaling and continuation

By princepainter·Created 8 months ago·Updated 7 months ago· 105
Painter LTX2V Plus
  • video_vae
  • audio_vae
  • start_image
  • end_image
  • latent
  • upscale_model
  • latent
  • video_latent
  • audio_latent
  • width
  • height
width768
height512
length97
frame_rate25.0
batch_size1

PainterLTX2VPlus is what the pack's README calls the all-in-one latent generator, and the name isn't just branding - it's the plain PainterLTX2V with three things bolted on. If you only ever do text-to-video or a simple first-frame I2V, the basic node is all you need and this one is extra surface area for nothing. But the moment you want to continue an existing clip, upscale the latent before sampling, or hand the width and height to downstream nodes, Plus is the one to reach for.

What the "Plus" actually adds

Start with everything PainterLTX2V does - empty latent, first/last frame splice via the noise mask, audio VAE attachment. Then:

  • latent input - drop in a latent from a previous run and the node uses it as the base instead of creating a fresh empty one. That's your continuation and resampling path: generate, then feed the result back in for another pass, with optional new frame conditioning.
  • upscale_model input - takes a LATENT_UPSCALE_MODEL, the same format Lightricks' LTXVLatentUpsampler uses (the LTX-2/2.3 latent upscalers). This is latent-space upscaling, not a pixel upscaler: it runs on the compressed latent before sampling, so it's a resolution-of-generation trick rather than a detail-add on output.
  • width / height outputs - the node just echoes back what you set. Sounds pointless until you're building auto-layout workflows and downstream nodes want the dimensions as plain integers.

The mechanism for the upscale step is worth knowing because it's a classic trap. The node un-normalizes the latent through your video_vae's per-channel statistics, runs the upscaler, then re-normalizes with the same stats. That means the upscaler has to be trained for the same VAE family you loaded - bolt a mismatched upscaler onto a different VAE and you'll get color shift and mushy output. Also note the code drops the noise mask after upsampling, so if you combined frame control with an upscaler, the frame conditioning happens before the upscale.

Wiring it up

The use cases from the README map cleanly to which optional inputs you connect:

  • start_image only → basic image-to-video
  • start_image + end_image → interpolate/transition between two stills
  • latent → continuation or resampling of a previous clip
  • upscale_model → higher-resolution latent before sampling

Outputs are the same trio as the basic node - latent, video_latent, audio_latent - plus the two INTs. Feed the split latents into the pack's PainterSamplerLTXV and decode with any LTX video VAE decoder.

Install

Same story as the rest of the pack - no pip dependencies, no requirements.txt, just recent ComfyUI core. ComfyUI Manager (search "PainterLTXV2") or:

cd ComfyUI/custom_nodes/
git clone https://github.com/princepainter/ComfyUI-PainterLTXV2.git

then restart. It sits in latent/video/ltxv next to the plain version. The heavy lifting is the models: LTX checkpoint + video VAE from Lightricks, plus the latent upscaler weights if you use that input, and the audio VAE if you want sound.

If you're on a ComfyUI older than the LTX-2 audio builds, skip the troubleshooting rabbit hole and just update ComfyUI - the pack depends on comfy.nested_tensor and won't load without it. And when your upscaled output looks off, suspect the upscaler/VAE pairing before anything else.

Categorylatent/video/ltxv

Inputs (11)

NameTypeDefaultDescription
video_vaeVAE
widthINT76864–4096
heightINT51264–4096
lengthINT971–1024
frame_rateFLOAT25.01–120
batch_sizeINT11–4096
audio_vaeoptVAE
start_imageoptIMAGE
end_imageoptIMAGE
latentoptLATENT
upscale_modeloptLATENT_UPSCALE_MODEL

Outputs (5)

NameTypeDescription
latentLATENT
video_latentLATENT
audio_latentLATENT
widthINT
heightINT