BMAB KSampler Hires. Fix
The classic two-pass detail boost, BMAB-flavored
- bind
- image
- lora
- BMAB bind
- image
Hi-res fix is one of the oldest tricks in the Stable Diffusion book: generate at your model's native resolution first, then run a second, low-denoise pass to add coherent detail rather than trying to generate directly at a size the model wasn't trained for. Skip that second pass and pushing resolution up front just gets you tiling artifacts and duplicated limbs. This node is BMAB's version of that second pass, wired to run right after a first BMAB KSampler in the same pipeline.
What makes it a "hires fix" node specifically
The tell is the denoise default: 0.4. Compare that to BMAB's plain KSampler node, which defaults to denoise = 1 (a full first-pass generation from noise). A low denoise here means the sampler starts from your existing image rather than pure noise, and only redraws enough to add texture and sharpen edges without changing the composition underneath - exactly the two-pass pattern the community settled on years ago and never really moved off of for anything below full instruction-editing models.
Notably, this node doesn't expose its own width/height fields the way BMAB's Kohya Deep Shrink sampler variant does - the resolution bump comes from whatever upstream scaling has already happened to the image or latent carried in your bind before it reaches this node, not from a parameter set here.
The inputs
steps, cfg_scale, sampler_name, and scheduler behave exactly like your main sampler - and as with the rest of BMAB, the sampler/scheduler dropdowns default to "Use same sampler" / "Use same scheduler," so leaving them alone means this pass inherits whatever you set on your first KSampler. denoise (default 0.4) is the one dial that actually defines this node's job: raise it if the detail pass feels too subtle, lower it toward 0.25-0.3 if it's changing things you didn't want touched.
Optional inputs are image (feed something other than what's in the bind) and lora - BMAB's own lora type, letting you apply a LoRA to just this refinement pass without it affecting your first-pass generation.
Output is the standard BMAB pair: an updated bind to keep chaining, and the refined image.
Installing it
ComfyUI Manager: search comfyui_bmab, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/portu-sim/comfyui_bmab.git
cd comfyui_bmab
pip install -r requirements.txt
The README also calls for comfyui_controlnet_aux and ComfyUI_IPAdapter_plus installed alongside comfyui_bmab, cloned and pip-installed the same way, even though this particular sampler node doesn't call either directly.
Where this goes wrong
The most common mistake is treating this like a first-pass generator and setting denoise near 1 - that mostly discards your first pass and re-generates from scratch, which defeats the point of a hi-res fix and usually changes the composition you were trying to refine. The second is skipping the actual resolution upscale before this node runs: since there's no width/height field here, if nothing upstream in your bind chain increased the image size, this node is just doing a low-denoise re-sample at the same resolution, which adds a little texture but not the detail boost people expect from "hires fix." Make sure something - a latent upscale, an image resize node, whatever fits your graph - actually bumps the resolution before this node gets the bind.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| bind | BMAB bind | — | |
| steps | INT | 200–10000 | — |
| cfg_scale | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 45 options: Use same sampler, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39 | |
| scheduler | COMBO | 10 options: Use same scheduler, simple, sgm_uniform, karras, exponential, ddim_uniform, +4 | |
| denoise | FLOAT | 0.400–1 | — |
| imageopt | IMAGE | — | |
| loraopt | BMAB lora | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| BMAB bind | BMAB bind | — |
| image | IMAGE | — |