FL KSampler Plus
Tiled sampling for big images on modest VRAM
- model
- positive
- negative
- latent_image
- vae
- image
- model
- positive
- negative
- latent
- vae
- image
When you try to sample a really big latent, you hit a VRAM wall - the whole image has to fit in memory at once, and 2048×2048 on a diffusion transformer will OOM most consumer cards. FL_KsamplerPlus gets around that the same way tiled upscalers do: it slices the image into an overlapping grid, samples each tile separately so only one tile is in VRAM at a time, then blends them back together. The result is arbitrary output size on limited hardware, which is exactly the pitch behind Ultimate SD Upscale and Tiled Diffusion.
The blend is the interesting part. Naive tiling gives you visible seams where tiles meet. This node overlaps the tiles and blends the overlap with cosine-weighted masks, so the join fades instead of snapping. Overlap plus a soft blend is the standard recipe for seamless tiling, and it's why the overlap slider matters more than it looks.
The inputs that actually matter
There's a long parameter list, but most of it is the usual KSampler stuff (model, positive, negative, seed, steps, cfg, sampler_name, scheduler, denoise). The tiling-specific ones are what you tune:
x_slices/y_slices(1–8 each) - the grid. 2×2 gives four tiles; 3×3 gives nine. More slices = less VRAM per tile but more total sampling work and more seams to blend. Use the smallest grid that fits.overlap(0–0.9, default 0.25) - how much neighboring tiles share. Too low and seams show through; 0.25 is a sane start, bump it toward 0.3–0.4 if you still see grid lines.input_type-latentorimage. If you feed an image, you must also connect avaeso it can encode; the optionalimage,latent_image, andvaeinputs cover both paths.use_sliced_conditioning(default on) - splits your prompt conditioning across tiles.
Outputs are a full passthrough set - model, positive, negative, latent, vae, image - so you can chain straight into another node without re-plugging your model and conditioning. The image output is the decoded result; latent if you want to keep sampling.
Installing it
Part of ComfyUI_Fill-Nodes. ComfyUI Manager: search Fill-Nodes, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart. No extra model download for this node; it uses the model, VAE, and conditioning you wire in.
Where it bites, and the honest caveat
Two traps. First, tiled sampling isn't tiled upscaling. Without a tile-aware condition holding each tile to the source (the way ControlNet Tile does in an Ultimate SD Upscale setup), tiles can quietly diverge - a texture on the left tile drifts from the same texture on the right, and you get a patchwork feel. Keep denoise modest if you're refining an existing image, and expect it to be more forgiving on flat detail than on faces or text spanning a seam. Second, use_sliced_conditioning can smear your prompt: a prompt like "a portrait" applied per-tile means each tile tries to be a whole portrait. For upscale-style refinement it's usually better behaved with the conditioning kept simple.
There's also a V2 of this node in the pack (FL_KsamplerPlusV2) that reworks how conditioning is split across tiles and adds a strength control - if the prompt-smearing above annoys you, jump to that one. This original is the simpler, older version; V2 is the one to reach for if you're starting fresh.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 7.000–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
| input_type | COMBO | 2 options: latent, image | |
| x_slices | INT | 21–8 | — |
| y_slices | INT | 21–8 | — |
| overlap | FLOAT | 0.250–0.9 | — |
| batch_size | INT | 11–64 | — |
| use_sliced_conditioning | BOOLEAN | true | — |
| latent_imageopt | LATENT | — | |
| vaeopt | VAE | — | |
| imageopt | IMAGE | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| vae | VAE | — |
| image | IMAGE | — |