Nodes/ComfyUI Ultimate SD Upscale FLS LLLite/Ultimate SD Upscale (FLS Accelerated)
ComfyUI Node

Ultimate SD Upscale (FLS Accelerated)

Tiled upscaling with a foveated detail sampler swapped in

By Lebensignal·Created 2 months ago·Updated 2 months ago· 10
Ultimate SD Upscale (FLS Accelerated)
  • image
  • model
  • positive
  • negative
  • vae
  • upscale_model
  • IMAGE
upscale_by2.00
seed0
steps20
cfg8.00
sampler_name
scheduler
denoise0.20
fovea_strength5.0
sharpness1.00
mask_inertia0.85
mode_type
tile_width512
tile_height512
mask_blur8
tile_padding32
seam_fix_mode
seam_fix_denoise1.00
seam_fix_width64
seam_fix_mask_blur8
seam_fix_padding16
force_uniform_tilestrue
tiled_decodefalse

The stock Ultimate SD Upscale node has been ComfyUI's default answer to "how do I upscale to 4K without running out of VRAM" for years now: split the image into overlapping tiles, run the diffusion sampler on each one, stitch them back together with a seam-fix pass. This fork keeps that whole pipeline intact and swaps out exactly one thing - the sampler that denoises each tile. Instead of a plain KSampler call, it drops in FLSampler ("Foveated Latent Sampler," from a small side-pack by BlackSnowSkill), which is built to add texture where the image is already doing something interesting - skin, fabric, foliage - instead of sanding everything down uniformly. Reach for this node when you're already sold on tiled upscaling and want more of that fine texture out of the same pipeline, without switching your whole tiling engine.

Worth being straight about scale here: this is a niche fork of a fork, low install base, no big community thread to lean on if something looks off. If you just want the reliable, well-trodden path, plain Ultimate SD Upscale (ssitu's ComfyUI port of Coyote-A's original A1111 script) is still the safe default. This node is for once you've already got that working and want to try the detail-injection angle on top.

How it works

Tiling mechanics are identical to any Ultimate SD Upscale node: mode_type (Linear, Chess, or None) decides tile order, tile_width/tile_height and tile_padding set how the image gets cut up, and the seam_fix_* group runs a lighter second pass over tile boundaries if you see patchwork lines. What's different is per-tile denoising. Instead of one clean pass, FLSampler runs "differential latent analysis" to find high-activity regions of the latent, then layers unsharp masking for edge definition and stochastic noise injection for fine texture (pores, weave, grain) on top of that. Three knobs steer it: fovea_strength controls how much texture gets injected, sharpness controls edge definition, and mask_inertia smooths how the "in-focus" region moves between denoising steps so it doesn't jump around tile to tile. The upstream sampler's own docs recommend roughly 3–8 for fovea_strength and 0.3–1.0 for sharpness - the node's defaults (5 and 1) sit right in that band, so starting there is a reasonable call.

The inputs and outputs that matter

You feed it what you'd feed any img2img upscale: image, model, positive/negative conditioning, vae, and an upscale_model - an ESRGAN-family model, 4x-UltraSharp is the usual community pick. upscale_by sets the target multiplier (default 2x), and denoise (default 0.2) controls how much the tile pass is allowed to change the source - keep it on the low side, since tiled upscales are meant to add detail, not repaint the image. The three FLS knobs above are the actual reason to pick this node over the plain one. Everything else - seed, steps, cfg, sampler_name, scheduler, and the tiling/seam-fix group - behaves exactly like stock Ultimate SD Upscale. It outputs a single IMAGE.

How to install it

Through ComfyUI Manager, search "ComfyUI Ultimate SD Upscale FLS LLLite" and install. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Lebensignal/ComfyUI-UltimateSDUpscale-FLS-LLLite.git

Restart ComfyUI. One thing to know before your first run: on first import, the node creates a repositories/ultimate_sd_upscale folder and pulls the original Coyote-A A1111 script into it automatically if it isn't already there - which means your very first launch needs network access. If you're on an offline or firewalled box, grab Coyote-A/ultimate-upscale-for-automatic1111 yourself and drop its contents into ComfyUI/custom_nodes/ComfyUI-UltimateSDUpscale-FLS-LLLite/repositories/ultimate_sd_upscale before you disconnect.

Common issues & troubleshooting

Node fails to load or errors on first use. Almost always the auto-download step above - no network on first import, or GitHub is blocked. Vendor the Coyote-A script manually at the path above and restart.

Output looks over-sharpened or noisy. You're probably running fovea_strength or sharpness too hot. Pull fovea_strength toward the low end of its 3–8 sweet spot and sharpness toward 0.3–0.5 before touching anything else - the whole point of this node is texture that reads as real, not crunchy.

Tiles don't line up / visible seams. That's what seam_fix_mode is for, and it isn't doing anything at "None." Switch it to "Band Pass" or "Half Tile" and bump seam_fix_width/seam_fix_mask_blur if the seam is still visible.

Detail flickers between tiles. Raise mask_inertia toward its top end (0.9–0.99) so the "in-focus" region transitions more smoothly across denoising steps instead of jumping around between neighboring tiles.

Categoryimage/upscaling

Inputs (28)

NameTypeDefaultDescription
imageIMAGE
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
upscale_byFLOAT2.000.05–4
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.000–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
fovea_strengthFLOAT5.00–10
sharpnessFLOAT1.000–3
mask_inertiaFLOAT0.850–0.99
upscale_modelUPSCALE_MODEL
mode_typeCOMBO3 options: Linear, Chess, None
tile_widthINT51264–8192
tile_heightINT51264–8192
mask_blurINT80–64
tile_paddingINT320–8192
seam_fix_modeCOMBO4 options: None, Band Pass, Half Tile, Half Tile + Intersections
seam_fix_denoiseFLOAT1.000–1
seam_fix_widthINT640–8192
seam_fix_mask_blurINT80–64
seam_fix_paddingINT160–8192
force_uniform_tilesBOOLEANtrue
tiled_decodeBOOLEANfalse

Outputs (1)

NameTypeDescription
IMAGEIMAGE