Forbidden Vision 🎨 Inpainter
The Fixer's blending engine, handed to you with a paintbrush
- model
- vae
- positive
- negative
- image
- mask
- image
- latent
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, theLATENToutput is just an empty placeholder, so the node skips the costly VAE encode. Turn it off only if you genuinely need a latent downstream. Theimageoutput 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.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| vae | VAE | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| image | IMAGE | — | |
| mask | MASK | — | |
| steps | INT | 121–100 | — |
| cfg | FLOAT | 4.00–30 | — |
| sampler | COMBO | euler_ancestral | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | beta | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| denoise | FLOAT | 0.800–1 | — |
| seed | INT | 00–18446744073709550000 | — |
| processing_resolution | INT | 1024512–2048 | — |
| crop_padding | FLOAT | 1.61–3 | Padding added to the inpaint region. |
| manual_rotation | COMBO | None | Manually rotate face crop before processing |
| enable_pre_upscale | BOOLEAN | true | — |
| upscaler_model | COMBO | Fast 4x (Lanczos) | 4 options: Fast 4x (Bicubic AA), Fast 4x (Lanczos), Fast 2x (Bicubic AA), Fast 2x (Lanczos) |
| mask_expansion | INT | 20–100 | — |
| sampling_mask_blur_size | INT | 211–101 | — |
| sampling_mask_blur_strength | FLOAT | 1.00.1–6 | — |
| blend_softness | INT | 120–200 | — |
| enable_color_correction | BOOLEAN | true | — |
| enable_differential_diffusion | BOOLEAN | true | — |
| bypass_cropping | BOOLEAN | false | Skip cropping and perform full-image inpainting |
| bypass_latent_output | BOOLEAN | true | Skip encoding the final image to latent. The LATENT output returns an empty placeholder. Turn off only if you need the latent downstream. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| latent | LATENT | — |