Nodes/Bubba Nodes/Bubba Tiled KSampler Upscaler (Seam Fix)
ComfyUI Node

Bubba Tiled KSampler Upscaler (Seam Fix)

Bubba Tiled KSampler Upscaler (Seam Fix)

By bubbafett5611·Created 5 months ago·Updated 2 months ago· 0
Bubba Tiled KSampler Upscaler (Seam Fix)
  • pipe
  • image
  • latent
  • metadata
  • model
  • vae
  • positive
  • negative
  • pipe
  • image
  • latent
  • metadata
  • info
seed0
steps20
cfg6.0
sampler_name
scheduler
denoise0.20
tile_width512
tile_height512
scale_by2.00
overlap32
resize_method
mask_blur8
redraw_mode
seam_fix_mode
seam_fix_denoise0.15
seam_fix_width64
seam_fix_mask_blur8
seam_fix_padding32
upscale_model_name

Bubba Tiled KSampler Upscaler (Seam Fix) is the pack's take on Ultimate SD Upscale: it pixel-upscales your image with an ESRGAN model, then runs an actual checkpoint model through an overlapping-tile sampling pass to redraw detail, with a seam-fix stage to hide the tile boundaries. This is the "add invented detail at arbitrary resolution" end of upscaling - the other half of the coin from the plain Bubba Upscaler, and the workflow the KB's upscaling essay credits with letting 6GB cards reach 4K+.

It earns its complexity. Tiled diffusion is the tool that gets "crazy good" results and also the one with a settings minefield: tile size, overlap, denoise, and the dreaded visible seams between tiles. This node's real feature is that it makes the seam problem first-class instead of leaving you to fiddle blindly. The source is a faithful Ultimate SD Upscale-style pipeline - pixel upscale, then sequential VAE-encode/sample/decode per tile with a soft feather mask for blending.

How it works

The pipeline is: resolve the image (and model, VAE, conditioning) from the pipe or explicit overrides → pixel-upscale the whole image → walk overlapping tiles, sampling each with the model → feather-blend them back together → optionally redraw the seam bands. The same seed is deliberately reused for every tile, which stops the discontinuous tile-specific noise patterns that cause visible patchwork - a detail the README calls out explicitly and one that shows up in the KB's upscaling essay as a real failure mode (tiles diverging from the source).

The settings that matter, straight from the README for a 512px-native model:

  • tile_width / tile_height - 512x512 to start.
  • overlap - 32px of context so each tile sees beyond its edge.
  • mask_blur - 8px feather for the blend.
  • denoise - 0.15–0.25 for redraw; too high and tiles invent their own reality.

scale_by (default 2) is the target upscale, redraw_mode is linear or chess (tile visitation order), and the seam_fix_mode combo (none, band_pass, half_tile, half_tile_plus_intersections) plus seam_fix_denoise/seam_fix_width/seam_fix_mask_blur/seam_fix_padding control the boundary-repair pass. upscale_model_name feeds the initial pixel upscale, or you can pick "Lanczos (no upscale model)".

Outputs: image, latent (the re-encoded latent), pipe, metadata, and info.

The inputs that matter

Start with denoise, tile_width/tile_height, overlap, and mask_blur. Leave seam fixing none until you actually see boundaries, then try half_tile at 0.1–0.2 seam denoise, 64px width, 8px blur, 32px padding.

How to install it

Standard pack install - ComfyUI Manager → "Bubba Nodes" → install → restart, or

cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/bubba_nodes.git

restart, pip install -r requirements.txt if needed. Needs ComfyUI v0.27.0+. Real dependencies are models: an ESRGAN model in models/upscale_models and your checkpoint of choice. No ComfyUI_TiledKSampler or Ultimate Upscale extension required - it's all self-contained.

Gotchas

The two classic traps are over-denoise (tiles drifting into a patchwork, per the KB essay) and ignoring seams until they're baked into a full-res render. Also note the latent output only exists if a VAE path resolves; on a long pipeline that's where you check first when the node errors on a missing VAE. Tiled diffusion is slower than ESRGAN by design - each tile is a full sample. And because the pack is young with no community write-ups yet, the README's tiled-upscale section (the exact starting values quoted above) is currently the best tuning guide there is.

CategoryBubba Nodes/Image

Inputs (27)

NameTypeDefaultDescription
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT6.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.200–1
tile_widthINT512128–4096
tile_heightINT512128–4096
scale_byFLOAT2.001–8
overlapINT320–1024
resize_methodCOMBO6 options: lanczos, bicubic, bilinear, nearest-exact, area, bislerp
mask_blurINT80–64
redraw_modeCOMBO2 options: linear, chess
seam_fix_modeCOMBO4 options: none, band_pass, half_tile, half_tile_plus_intersections
seam_fix_denoiseFLOAT0.150–1
seam_fix_widthINT640–1024
seam_fix_mask_blurINT80–64
seam_fix_paddingINT320–1024
upscale_model_nameCOMBO1 options: Lanczos (no upscale model)
pipeoptBUBBA_PIPE
imageoptIMAGE
latentoptLATENT
metadataoptBUBBA_METADATA
modeloptMODEL
vaeoptVAE
positiveoptCONDITIONING
negativeoptCONDITIONING

Outputs (5)

NameTypeDescription
pipeBUBBA_PIPE
imageIMAGE
latentLATENT
metadataBUBBA_METADATA
infoSTRING