π° Large Refiner - McBoaty v3 /u
The all-in-one upscaler-refiner that lets an LLM write the tile prompts
- image
- model
- clip
- vae
- positive
- negative
- image
- tiles
- original_resized
- info
This is the "Large Refiner - McBoaty v3" node, and it's the version of McBoaty that graduated from "neat single node" to "the pipeline is inside the node." Where v1 was one combined upscale-and-refine pass and v2 tidied it up, v3 added two things that changed the character of the tool: dynamic tiling and LLM-assisted per-tile prompt generation. If you found this class name in an old workflow, this is what it does - and if you're browsing for what to use today, know that the current pack still ships this exact node, just renamed to MaraScottMcBoatyUpscalerRefinerNode_v3.
Everything is in one graph object: it upscales your image, slices it, refines each tile with a KSampler, color-corrects the result, and can generate per-tile prompts from a vision LLM plus a text LLM - all in a single node sitting between your LoadImage and your SaveImage.
What you actually set
The upscale side:
- image, model, clip, vae, seed - the standard wiring.
- upscale_model - dropdown from
models/upscale_models; empty means no model installed.output_upscale_method(bicubic default) covers model-less resizing. - output_size_type (boolean, default true) and output_size (1.0β16.0, default 1) - the v3 addition: true outputs at the upscale model's native size, false multiplies your input size by
output_sizefor a custom target. - tile_size (512) and feather_mask (64) - the slice size and the feathered overlap between tiles that hides the seams.
- vae_encode / tile_size_vae (both default 512) - tiled VAE encoding so a 4K print doesn't OOM a mid-range card.
- color_match_method (default none;
reinhard,mvgd,hm-mkl-hm, etc.) - Kijai's color match to pull the final image back toward the original's colors after the diffusion pass.
The refine side:
- steps (10), cfg (2.5), denoise (0.27) - KSampler controls. The standing advice from the author and the community is that 0.27β0.35 is the sweet spot; push past ~0.5 and tiles start to hallucinate and show seams. That advice has been consistent since the v1 era.
- sigmas_type with ays_model_type (SD1/SDXL/SD3/SVD) - pick AlignYourSteps to match your model family.
- control_net_name plus canny
low_threshold/high_thresholdandstrength/start_percent/end_percent- optional ControlNet conditioning, the thing that keeps each tile faithful to the source. v1 and v2 didn't have this; it's the v3 addition that makes high-denoise passes survivable.
The LLM side (the v3 headline):
- tile_prompting_active (false) - the master switch.
- vision_llm_model (Florence-2-large) and llm_model (llama3-70b-8192) - a vision model captions each tile, then a text LLM turns that into a prompt. The author's own README calls it "not accurate and will be improved." It's an experiment, not a feature you should build a workflow around.
Outputs
image is the finished upscale; tiles is the tile map for debugging; original_resized is the pre-refine reference; info is a STRING of diagnostics. That's it - v3 is the last single-node LargeRefiner. The v4 line splits the job into the Upscaler / TilePrompter / Refiner trio you'll see on adjacent pages, and the split is the right call if you're starting fresh.
Installing it
The pack installs once and registers every generation of these nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/davask/ComfyUI-MarasIT-Nodes
Then restart ComfyUI. Manager route: search "MaraScott" β Install β restart. No model downloads for core use; the LLM prompting needs Florence-2 and a Groq/Ollama backend only if you switch tile_prompting_active on.
Where it bites
The positive/negative conditioning inputs are required on the graph - wire them from your CLIP Text Encodes or the node refuses to run. And if your upscale_model list shows nothing, you're looking at a model folder, not a bug: drop a 4x ESRGAN into models/upscale_models and refresh. Finally, note the current pack (v5/v6 era) flags its newest McBoaty as broken pending help on issue #187 - if you're touching this family today, the v3-to-v5 line is the stable ground.
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| model | MODEL | β | |
| clip | CLIP | β | |
| vae | VAE | β | |
| positive | CONDITIONING | β | |
| negative | CONDITIONING | β | |
| seed | INT | 40β18446744073709550000 | β |
| upscale_model | COMBO | 0 options: | |
| output_size_type | BOOLEAN | true | β |
| output_size | FLOAT | 1.001β16 | β |
| output_upscale_method | COMBO | bicubic | 6 options: area, bicubic, bilinear, bislerp, lanczos, nearest-exact |
| steps | INT | 101β10000 | β |
| cfg | FLOAT | 2.50β100 | β |
| sigmas_type | COMBO | 3 options: BasicScheduler, SDTurboScheduler, AlignYourStepsScheduler | |
| sampler_name | COMBO | 27 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +21 | |
| basic_scheduler | COMBO | 6 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform | |
| denoise | FLOAT | 0.270β1 | β |
| ays_model_type | COMBO | SDXL | 4 options: SD1, SDXL, SD3, SVD |
| tile_size | INT | 512320β4096 | β |
| feather_mask | INT | 6432β16384 | β |
| vae_encode | BOOLEAN | true | β |
| tile_size_vae | INT | 512320β4096 | β |
| color_match_method | COMBO | none | 7 options: none, mkl, hm, reinhard, mvgd, hm-mvgd-hm, +1 |
| tile_prompting_active | BOOLEAN | false | β |
| vision_llm_model | COMBO | microsoft/Florence-2-large | 1 options: microsoft/Florence-2-large |
| llm_model | COMBO | llama3-70b-8192 | 1 options: llama3-70b-8192 |
| control_net_name | COMBO | None | 1 options: None |
| low_threshold | FLOAT | 0.600.01β0.99 | β |
| high_threshold | FLOAT | 0.600.01β0.99 | β |
| strength | FLOAT | 0.400β10 | β |
| start_percent | FLOAT | 0.0000β1 | β |
| end_percent | FLOAT | 1.0000β1 | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| tiles | IMAGE | β |
| original_resized | IMAGE | β |
| info | STRING | β |