Nodes/ComfyUI-Foveated_Diffusion/Foveation Mask Preview (FovDiff)
ComfyUI Node

Foveation Mask Preview (FovDiff)

See the fovea before you trust the speedup

By ruwwww·Created 2 months ago·Updated 2 months ago· 1
Foveation Mask Preview (FovDiff)
  • image
  • foveation_mask
  • image
overlay_colorwhite
overlay_alpha0.40

Every node that speeds up generation has the same hidden cost: you can't see what it's cutting until you get the result. FoveationMaskPreview is the pack's answer - it overlays the foveation mask on an image so you can see, before running a batch, exactly which region stays high-res and which gets the low-res treatment. It's a debugging tool, and honestly one you should treat as a mandatory step the first few times you touch this pack, because the whole technique is "deliberately degrade the part of the image you don't care about," and the only way to be sure you picked the right part is to look at it.

Mechanically it's the simplest node in the five. It takes your FOVEATION_MASK (the output of FoveationMask, still in token-grid space) plus any image - wire in your EmptyLatentImage output or the IMAGE from a quick VAEDecode, it doesn't care - upscales the mask to the image resolution with nearest-neighbor sampling, and tints the high-res region with a solid color at your chosen opacity. The output is a new IMAGE; drop it on SaveImage or just watch it in the preview pane.

The two inputs that matter

  • overlay_color - white, red, green, or blue. Red is the usual pick because it reads as "danger zone / this stays sharp" against most content, but white is the default and fine for clean latent previews.
  • overlay_alpha - 0 to 1, default 0.4. How opaque the tint is. 0.4 is a good middle ground; push toward 0.7 if you're previewing a busy image where a subtle tint gets lost.

Everything else - image and foveation_mask - you feed straight from the other nodes in the pack.

Why you should actually bother

Foveated diffusion is new enough that the community has essentially no war stories about it yet - a single announcement thread as of mid-2026, no crowd-sourced settings - so you're your own QA department. The two failure modes this node catches cheaply are: a mask that doesn't cover your subject (the face lands in the degraded periphery, and you find out after a 40-second render), and a mask that's so big you've defeated the purpose (the fovea covers half the image, so the "speedup" is a rounding error). Both are visible in about two seconds of preview. If you change radius, center_x, or center_y on the mask, re-preview - the mask node's IS_CHANGED logic will flag it, but your eyeballs are the real check.

It's also a nice teaching tool for what the technique actually does: preview a 0.30 circular mask centered on a face and you'll see how much of the frame is being run at low resolution. That's the moment the 2.6× speedup from the README stops being a claim and becomes a shape on screen. Install is the pack-wide one - ComfyUI Manager → "FovDiff", or git clone https://github.com/ruwwww/ComfyUI-Foveated_Diffusion into custom_nodes and restart - and this node, being pure image math, is also the most likely to keep working when the rest of the pack breaks on a ComfyUI update. Use it.

Categoryfoveated_diffusion

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
foveation_maskFOVEATION_MASK
overlay_colorCOMBOwhite4 options: white, red, green, blue
overlay_alphaFLOAT0.400–1

Outputs (1)

NameTypeDescription
imageIMAGE