Nodes/🐰 MaraScott Nodes/🐰 Refiner - McBoaty [3/3] - v5 /u
ComfyUI Node

🐰 Refiner - McBoaty [3/3] - v5 /u

Refine only the tiles that need it

By MaraScottΒ·Created 3 years agoΒ·Updated 10 months agoΒ· 179
🐰 Refiner - McBoaty [3/3] - v5 /u
  • pipe
  • pipe_prompty
  • McBoaty Pipe
  • McPrompty Pipe
  • image
  • image (original)
  • tiles
  • prompts
  • info
β—„tiles_to_processβ–Ί
β—„output_size_typetrueβ–Ί
β—„output_size1.00β–Ί
β—„sigmas_typeβ–Ύβ–Ί
β—„model_typeSDXLβ–Ί
β—„sampler_nameβ–Ύβ–Ί
β—„basic_schedulerβ–Ύβ–Ί
β—„steps10β–Ί
β—„cfg2.5β–Ί
β—„denoise0.27β–Ί
β—„control_net_nameNoneβ–Ί
β—„low_threshold0.60β–Ί
β—„high_threshold0.60β–Ί
β—„strength0.40β–Ί
β—„start_percent0.000β–Ί
β—„end_percent1.000β–Ί

This is the payoff node of the v5 McBoaty set. The Upscaler sliced your image into tiles and stamped them with prompts; the TilePrompter (optionally) let you hand-edit those prompts per tile; now the Refiner [3/3] actually runs the sampler on each tile, then stitches everything back into one image. It's the node with the most knobs, and also the one that makes McBoaty genuinely different from a plain tiled upscale.

The inputs that do the work

It takes the McBoaty Pipe from the Upscaler (or from another Refiner pass - you can chain refiners to iterate), and optionally a McPrompty Pipe from the TilePrompter if you want the per-tile prompts honored. Then:

  • tiles_to_process - the standout feature. Blank = process all tiles. Otherwise pick exactly which tiles to re-run: 1,2,3, a range 1-4, or a mix 1,3,4-6,8. This is the whole "second pass on just the wild tiles" workflow in one text field. Tiles are numbered 1..N left-to-right, top-to-bottom; the TilePrompter shows you the numbering.
  • output_size_type / output_size - output at the upscale model's native size, or scale by a custom coefficient (output_size). The README's "custom size" mode multiplies your input size.
  • sigmas_type / model_type - scheduler family (Basic / SDTurbo / AlignYourSteps) plus your model family (SD1/SDXL/SD3/FLUX1/SVD). You pick model_type even when not using AYS, because it sets the native tile size for the sampler.
  • sampler_name / basic_scheduler / steps / cfg / denoise - the normal KSampler block. Defaults: 10 steps, CFG 2.5, denoise 0.27. Remember the README's rule: 0.27–0.35 for faithful output, and you can push one tile to 0.76 if you're re-refining it with control net active.
  • The ControlNet block - control_net_name (canny/union models only - the dropdown filters to names containing "canny" or "union"), low_threshold/high_threshold (canny edge thresholds, both 0.6), strength (0.4 default), start_percent/end_percent. This is the canny anchoring that keeps each tile glued to the source structure; it's what prevents the patchwork divergence that plagues unsupervised tiled upscaling. Strength 0.4 is a gentle guide, not a hard constraint.

Outputs

  • McBoaty Pipe - chain a second Refiner pass.
  • McPrompty Pipe - back into a TilePrompter for another edit round.
  • image - the stitched result.
  • image (original) - the input, for side-by-side.
  • tiles and prompts - the per-tile results and the prompts actually used, handy for debugging which tile misbehaved.
  • info - timing/settings string.

The intended loop

The README's own recipe: run the whole thing once at denoise 0.76 (with control net) in the Large Refiner, look at the tiles, then drop a Refiner pass with tiles_to_process set to just the bad ones and a lower denoise. That's the workflow that makes McBoaty feel surgical instead of "hope the sampler behaves."

Install

cd ComfyUI/custom_nodes
git clone https://github.com/MaraScott/ComfyUI_MaraScott_Nodes

Restart or use ComfyUI Manager β†’ "MaraScott". You'll want a canny-capable ControlNet in models/controlnet/ for anchoring; the pack's own requirements (color-matcher, numba, transformers, etc.) come along for the ride.

Is it overhyped? Not in its lane. It's slower than a plain Ultimate SD Upscale pass and it won't invent the detail SeedVR2 would - but those tools can't let you re-refine one tile by index while leaving the other 47 untouched. That per-tile control is the whole reason McBoaty exists, and this node is where it lives.

Category🐰 MaraScott/Upscaling/v5

Inputs (18)

NameTypeDefaultDescription
pipeMC_BOATY_PIPEβ€”
tiles_to_processSTRINGβ€”
output_size_typeBOOLEANtrueβ€”
output_sizeFLOAT1.001–16β€”
sigmas_typeCOMBO3 options: BasicScheduler, SDTurboScheduler, AlignYourStepsScheduler
model_typeCOMBOSDXL5 options: SD1, SDXL, SD3, FLUX1, SVD
sampler_nameCOMBO34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
basic_schedulerCOMBO9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
stepsINT101–10000β€”
cfgFLOAT2.50–100β€”
denoiseFLOAT0.270–1β€”
control_net_nameCOMBONone1 options: None
low_thresholdFLOAT0.600.01–0.99β€”
high_thresholdFLOAT0.600.01–0.99β€”
strengthFLOAT0.400–10β€”
start_percentFLOAT0.0000–1β€”
end_percentFLOAT1.0000–1β€”
pipe_promptyoptMC_PROMPTY_PIPE_OUTβ€”

Outputs (7)

NameTypeDescription
McBoaty PipeMC_BOATY_PIPEβ€”
McPrompty PipeMC_PROMPTY_PIPE_INβ€”
imageIMAGEβ€”
image (original)IMAGEβ€”
tilesIMAGEβ€”
promptsSTRINGβ€”
infoSTRINGβ€”