Nodes/Forbidden Vision/Forbidden Vision 🎨 Inpainter
ComfyUI Node

Forbidden Vision 🎨 Inpainter

The Fixer's blending engine, handed to you with a paintbrush

By luxdelux7·Created about a year ago·Updated about a month ago· 101
Forbidden Vision 🎨 Inpainter
  • model
  • vae
  • positive
  • negative
  • image
  • mask
  • image
  • latent
steps12
cfg4.0
samplereuler_ancestral
schedulerbeta
denoise0.80
seed0
processing_resolution1024
crop_padding1.6
manual_rotationNone
enable_pre_upscaletrue
upscaler_modelFast 4x (Lanczos)
mask_expansion2
sampling_mask_blur_size21
sampling_mask_blur_strength1.0
blend_softness12
enable_color_correctiontrue
enable_differential_diffusiontrue
bypass_croppingfalse
bypass_latent_outputtrue

The Fixer is automatic: it finds the face, decides what to change, and hides the plumbing. Inpainter (ForbiddenVisionInpaintLite) is the opposite - the same detection-era blending machinery (cropping, pre-upscaling, differential diffusion, color correction, feathered compositing) but with you supplying the mask and the prompt. It's the pack's "manual inpaint" node: mask what you want changed, and it handles everything that usually makes regional inpainting look pasted-on.

How it works

You give it a model, vae, positive/negative conditioning, an image, and a mask of your own choosing. It crops the masked region (with crop_padding, default 1.6, of surrounding context so the model sees lighting and style), pre-upscales if enable_pre_upscale is on, runs an inpaint sample at processing_resolution (default 1024), and blends the result back with:

  • differential diffusion (enable_differential_diffusion, on by default) - at high noise the mask allows structure changes, at low noise it locks the background in place. This is the trick that keeps the rest of the image stable while the masked area gets free rein.
  • color correction (enable_color_correction) - shifts the inpainted patch to match the surrounding tone so there's no wrong-color patch.
  • feathered blending (blend_softness, mask_expansion, plus the two mask-blur controls) - the seam killer.

Sampling controls are the standard steps (default 12), cfg (default 4), sampler (default euler_ancestral), scheduler (default beta - note it's beta, not the pack's usual sgm_uniform, because higher-denoise inpainting likes it), denoise (default 0.8), and seed.

The two toggles that matter most

  • bypass_cropping - off by default, and off is the better default. It crops to the mask and inpaints just that region, which is the whole point. Flip it on for full-image inpainting (masked sampling over the entire frame), which you'd want for a big region or when the mask touches the image edges.
  • bypass_latent_output - on by default, and here's the catch: while it's on, the LATENT output is just an empty placeholder, so the node skips the costly VAE encode. Turn it off only if you genuinely need a latent downstream. The image output always works.

Outputs are image and latent. Most workflows want image.

Why not just use a plain KSampler + Set Latent Noise Mask?

You can, and plenty of people do. The case for this node is that it bundles the full stack - pre-upscale, differential diffusion, color correction, and the same feathering the Fixer uses - into one call. The classic failure modes of hand-rolled masked inpainting (grey box, style mismatch, hard edges) are exactly what those built-ins prevent. It ships with the pack, so it costs nothing extra, and if you find yourself reaching for the Fixer but wishing you could control the mask, this is the middle ground.

CategoryForbidden Vision

Inputs (25)

NameTypeDefaultDescription
modelMODEL
vaeVAE
positiveCONDITIONING
negativeCONDITIONING
imageIMAGE
maskMASK
stepsINT121–100
cfgFLOAT4.00–30
samplerCOMBOeuler_ancestral44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBObeta9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.800–1
seedINT00–18446744073709550000
processing_resolutionINT1024512–2048
crop_paddingFLOAT1.61–3Padding added to the inpaint region.
manual_rotationCOMBONoneManually rotate face crop before processing
enable_pre_upscaleBOOLEANtrue
upscaler_modelCOMBOFast 4x (Lanczos)4 options: Fast 4x (Bicubic AA), Fast 4x (Lanczos), Fast 2x (Bicubic AA), Fast 2x (Lanczos)
mask_expansionINT20–100
sampling_mask_blur_sizeINT211–101
sampling_mask_blur_strengthFLOAT1.00.1–6
blend_softnessINT120–200
enable_color_correctionBOOLEANtrue
enable_differential_diffusionBOOLEANtrue
bypass_croppingBOOLEANfalseSkip cropping and perform full-image inpainting
bypass_latent_outputBOOLEANtrueSkip encoding the final image to latent. The LATENT output returns an empty placeholder. Turn off only if you need the latent downstream.

Outputs (2)

NameTypeDescription
imageIMAGE
latentLATENT