Circular VAE Decode (tile)
The lazy way to decode a seamless tile in one node
- samples
- vae
- IMAGE
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
SeamlessTileon 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
Conv2dlayers 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | — | |
| vae | VAE | — | |
| tiling | COMBO | 4 options: enable, x_only, y_only, disable |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |