Nodes/10S-Comfy-nodes/🎲 LTX Tiled Sampler
ComfyUI Node

🎲 LTX Tiled Sampler

Fix LTX2 upscale-pass color drift by sampling at the size the model was trained on

By TenStripΒ·Created 4 months agoΒ·Updated 26 days agoΒ· 244
🎲 LTX Tiled Sampler
  • noise
  • guider
  • sampler
  • sigmas
  • latent_image
  • output
  • denoised_output
β—„bypass_tilingfalseβ–Ί
β—„tile_axisautoβ–Ί
β—„n_tiles2β–Ί
β—„tile_overlap8β–Ί
β—„max_size_for_no_tile24β–Ί
β—„audio_passpassthroughβ–Ί
β—„audio_carrier_tilefirstβ–Ί
β—„debugfalseβ–Ί

This is the node that actually solves the LTX2 upscale problem, and it's the one I'd reach for first out of the whole pack. When you run a refinement pass on a 2Γ— upscaled latent, you're feeding the DiT 4Γ— the spatial tokens it was trained with. Every token now gets roughly a quarter of the per-token text-conditioning influence it expects, and the model starts operating outside its trained token-count range. The result is what you've seen a hundred times: broad hue shifts, color drift, and the prompt quietly losing its grip.

LTX Tiled Sampler is a drop-in replacement for SamplerCustomAdvanced that refuses to play that game. It splits the latent spatially along its longer axis with overlap, samples each tile as its own standalone clip at training-distribution token count, then blends the tiles back with a cosine-windowed Hann overlap. Same inputs, same wiring, better behavior.

How it works

Each tile runs the full sampling pipeline independently - noise, guider, sampler, sigmas, all of it - then the results blend. Don't confuse it with MultiDiffusion-style per-step coordination; this is whole-clip tiling, which is why it only works for light refinement. Every tile is a coherent sample on its own, and cosine blending hides the seams between them. It's transparent to your existing wiring: feed it the same noise source, guider, sampler object, and sigmas you'd give a normal sampler.

The inputs, beyond the standard sampler set (noise, guider, sampler, sigmas, latent_image):

  • tile_axis - auto splits the longer dimension (right call for most portrait/landscape video); override with H or W if you have a reason.
  • n_tiles (default 2) - tiles along the chosen axis. 2 suits most aspect ratios; go 3–4 for 4K+ outputs. 1 effectively disables tiling.
  • tile_overlap (default 8) - overlap in latent tokens. 8 reliably hides seams; shave it only if VRAM is tight, and expect seams if you do.
  • max_size_for_no_tile (default 24) - auto-skip tiling when the axis is at or below 24 latent tokens (β‰ˆ768 pixels at LTX's 32Γ— VAE compression). Inputs in the model's comfort zone just sample normally.
  • bypass_tiling - the honest escape hatch: routes to standard single-pass sampling so you can A/B against a non-tiled baseline or debug whether a problem is tile-related at all.
  • audio_pass - LTX2 is a video+audio model, and here's the clever bit. passthrough (default) leaves audio untouched. tile_carrying runs audio sampling alongside one chosen tile - the audio_carrier_tile (first, middle, last) - so video-audio cross-attention (read: lipsync) happens naturally during that tile's pass, at zero extra sampling steps. For talking-face content, first is the one: the speaker's usually in the top half.

Outputs are output and denoised_output, both LATENT, matching SamplerCustomAdvanced's contract.

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.

The one rule

Light denoise, few steps, refinement only. This is not a first-pass-from-noise sampler. The README is blunt: heavy-denoise tiling produces tile divergence that cosine blending can't reconcile. Typical upscale-pass schedule: sigmas starting moderate (around 0.85) with ~3 active steps, low denoise. The tooltip also flags euler_ancestral_cfg_pp as the recommended sampler algorithm for LTX2's distilled CFG=1 setups. Follow that and you get the color-stable upscale pass that base LTX2 refuses to give you for free.

Category10S Nodes/Sampling

Inputs (13)

NameTypeDefaultDescription
noiseNOISENoise generator from RandomNoise or similar. Wire from your existing noise source.
guiderGUIDERCFG/STG guider wrapping the model. Wire from BasicGuider, CFGGuider, or LTX's STG guider.
samplerSAMPLERSampling algorithm. euler_ancestral_cfg_pp recommended for LTX2 distilled CFG=1 setups.
sigmasSIGMASNoise schedule. Typical upscale-pass schedule starts moderate (e.g. 0.85) with 3 active steps.
latent_imageLATENTInput latent. For upscale-pass refinement, this is typically the output of an upsampler.
bypass_tilingoptBOOLEANfalseIf True, route directly to standard single-pass sampling (video+audio together via wrapper). Equivalent to having no tiling at all. Useful for A/B comparison, small inputs that don't need tiling, or debugging whether issues are tile-related or sampling-related.
tile_axisoptCOMBOautoWhich spatial axis to tile along. 'auto' picks the longer axis (best for typical portrait/landscape aspects). Override to force tiling along H (vertical splits) or W (horizontal splits).
n_tilesoptINT21–8Number of tiles along the chosen axis. Default 2 (split in halves) suits most aspect ratios. n_tiles=1 effectively disables tiling. Raise to 3-4 for very large outputs (4K+) along one axis.
tile_overlapoptINT80–32Overlap between adjacent tiles in latent tokens. Default 8 reliably hides seams. Reduce only if memory is constrained; smaller overlaps risk visible seams.
max_size_for_no_tileoptINT248–256Auto-skip tiling if the chosen-axis latent size is at or below this. 24 β‰ˆ 768 pixels at 32x VAE compression, well within model's comfort zone. Inputs at or below this skip tiling and run a single normal sampling pass.
audio_passoptCOMBOpassthroughHow to handle audio when input is video+audio wrapper. 'passthrough' (default): preserve original audio unchanged. 'tile_carrying': audio rides along with one chosen tile's sampling for proper video-audio cross-attention (lipsync). No extra sampling steps.
audio_carrier_tileoptCOMBOfirstWhich tile carries the audio when audio_pass=tile_carrying. 'first': top tile (ideal for vertical talking-face content where speaker is in upper half). 'middle': center tile (best for large outputs where subject is centered). 'last': bottom tile.
debugoptBOOLEANfalseVerbose per-tile diagnostic output. Helpful first time using the node to verify it's operating as expected.

Outputs (2)

NameTypeDescription
outputLATENTβ€”
denoised_outputLATENTβ€”