Nodes/Seamless tiling Node for ComfyUI/Circular VAE Decode (tile)
ComfyUI Node

Circular VAE Decode (tile)

The lazy way to decode a seamless tile in one node

By spinagon·Created 3 years ago·Updated 6 months ago· 290
Circular VAE Decode (tile)
  • samples
  • vae
  • IMAGE
tiling

Seamless tiling in ComfyUI needs two things: the model wrapped so it samples circularly, and the VAE wrapped so the decode doesn't glue a seam back in. CircularVAEDecode bundles the second half into a single node - it takes your latents, makes the VAE decode circularly, and hands you an image. No separate VAE juggling required.

What it does

This is MakeCircularVAE compressed into a decode step. In one go it takes a LATENT from your sampler, deep-copies the VAE you give it, patches the copy's first_stage_model convolutions with circular padding, and decodes. The tiling dropdown (enable, x_only, y_only, disable) sets which axes wrap - match it to whatever you set on your SeamlessTile model node. Output is a plain IMAGE you can preview or save.

So the wiring is tight:

KSampler (latent) ──> CircularVAEDecode ──> Preview / Save
                        ^
Load VAE ───────────────┘

When to reach for it - and when not to

The honest answer: it's the convenience option, and the pack's own README points you elsewhere. Deep-copying and patching the VAE happens on every decode here, so if you're generating a batch of texture variations, you're paying the copy cost over and over. The README explicitly says MakeCircularVAE is more efficient - it patches once and feeds a normal VAE Decode. Use CircularVAEDecode for a quick test, a one-off, or when you just want the smallest possible graph to see if tiling is going to work at all. The code itself is borrowed from FlyingFireCo's tiled_ksampler, so it's a proven approach - just not the leanest version of it.

Two things that bite people:

  • It's not free of the model node. This node only fixes the decode side. If you skip SeamlessTile on the model, you'll get a circular decode of a non-circular generation - still a seam, just in a different place. The two halves of the recipe go together.
  • The usual architecture caveat applies. It patches Conv2d layers in the VAE, so it works on conv-based autoencoders (SD 1.5, SDXL, Flux). On transformer-based or pixel-space models there may be nothing to patch - don't be surprised if it silently passes through.

At 3 impressions, this is the least-searched node in the pack, and honestly that's about right: for anything beyond a quick sanity check you'll probably want MakeCircularVAE + VAE Decode instead. But when you're just trying to confirm a tiling setup in five minutes, it's exactly the node you want.

Categorylatent

Inputs (3)

NameTypeDefaultDescription
samplesLATENT
vaeVAE
tilingCOMBO4 options: enable, x_only, y_only, disable

Outputs (1)

NameTypeDescription
IMAGEIMAGE