Nodes/10S-Comfy-nodes/πŸ” LTX Latent Upsampler (Tiled)
ComfyUI Node

πŸ” LTX Latent Upsampler (Tiled)

The memory-safe way to 2Γ— an LTX latent without wrecking extreme aspects

By TenStripΒ·Created 4 months agoΒ·Updated 26 days agoΒ· 244
πŸ” LTX Latent Upsampler (Tiled)
  • samples
  • upscale_model
  • vae
  • LATENT
β—„tile_size24β–Ί
β—„overlap8β–Ί
β—„max_size_for_no_tile32β–Ί
β—„rotate_for_landscapefalseβ–Ί
β—„debugfalseβ–Ί

LTX Latent Upsampler (Tiled) is the "wait, it was never the upscaler's fault" node. It's a drop-in replacement for ComfyUI's stock LTXVLatentUpsampler that processes the upscale in spatial tiles instead of all at once. The original reason was fixing color shifts and distortion at extreme aspect ratios - and then the pack author's own investigation found the upscaler wasn't actually the source of upscale-pass color drift. The sampler operating on upscaled token counts was (that's what the LTX Tiled Sampler fixes).

So what's left? A genuinely useful memory-safety tool. For big or extreme-aspect latents, tiling the upscale keeps only one tile in VRAM at a time, so the same upscale that OOMs on a portrait 1080Γ—1920 latent just works. In safe-aspect cases the output is virtually identical to the non-tiled version, which is exactly what you want from a drop-in.

How it works

The upscale model runs on tiles with cosine-windowed overlap blending, and the node handles the bookkeeping for you. It un-normalizes the latent once using the VAE's per-channel statistics, tiles and upscales, then re-normalizes once on the full output - so you don't get the per-tile normalization seams that cheaper tiling implementations leak.

The hidden gem is rotate_for_landscape. The theory, per the source: the upscale model's training distribution is biased toward landscape (most video data is wider than tall), so tall portrait inputs are out-of-distribution and drift. Enable it and the node transposes H/W before the upscale forward - making your portrait a "landscape" for the model - then transposes back. It's a lossless geometric transform, and for portrait work it's the difference between clean upscales and color drift. I'd leave it on for anything portrait.

The inputs that matter

  • samples, upscale_model, vae - required. The upscale_model is the LATENT_UPSCALE_MODEL from an Upscale Model Loader, vae is your LTX2 VAE.
  • tile_size (default 24) and overlap (default 8) - tile geometry in latent tokens. If overlap is >= tile_size the node clamps it for you.
  • max_size_for_no_tile (default 32) - inputs at or below this skip tiling entirely and run the stock non-tiled path, so small latents don't pay the tiling tax.
  • debug - verbose console output for first-time verification.

Output is a single LATENT, ready for your refinement sampler (the tiled one pairs naturally).

Installing it

Same TenStrip pack:

cd ComfyUI/custom_nodes
git clone https://github.com/TenStrip/10S-Comfy-nodes.git 10S_Nodes

or ComfyUI Manager β†’ "10S". Restart, no extra dependencies.

When to actually use it

Reach for this when your latent is big or tall and the stock upsampler chokes or drifts: extreme portrait aspects, 4K+ targets, or 12–16GB VRAM cards where a full-latent upscale forward is asking for trouble. If you're on a 24GB card at normal aspects, the stock LTXVLatentUpsampler is fine and you can skip this - but once your upscale pass starts throwing OOM or your vertical videos start looking like a different color grade, remember it was never the upscaler's fault, and this node exists to keep the upscaler honest anyway.

Category10S Nodes/Latent

Inputs (8)

NameTypeDefaultDescription
samplesLATENTβ€”
upscale_modelLATENT_UPSCALE_MODELβ€”
vaeVAEβ€”
tile_sizeoptINT248–128β€”
overlapoptINT82–32β€”
max_size_for_no_tileoptINT328–256β€”
rotate_for_landscapeoptBOOLEANfalseβ€”
debugoptBOOLEANfalseβ€”

Outputs (1)

NameTypeDescription
LATENTLATENTβ€”