ComfyUI Node

TBG ETUR Labs for Refiner

The experimental panel where tile fusion gets weird (in a good way)

By Ltamann·Created about a year ago·Updated 19 days ago· 156
TBG ETUR Labs for Refiner
  • PID_Model
  • ColorMatch_Debug
  • Custom_Sigmas_!DENOISE=1
  • Sampler
  • Ideogram4_Guider
  • cropped_positive
  • cropped_negative
  • output_1
Tile_Fusion_Blend1.00
Fusion_end0
Fusion_conditioningInpainting On with Noise Mask and Conditioning
Differential_Diffusiontrue
Sigma_Jump_Enabledfalse
Sigma_Jump_Strength0.00
Sigma_Jump_Start0.00
Sigma_Jump_End1.00
Flux2_Tile_Color_Correctiontrue
Flux2_Sampler_Hookfalse
Color & Structure Stabilizer0.00
Save_Tiles_in_Temp_Folderfalse
stitch_blendinggpupyramid
Content_Aware_Laplacian_Seamtrue
VL_Encoding_ModeInner Tile + Global Embedding
max_upscale_size_segment2048
Segment_Background_Harmonizationtrue

ETUR's refiner already fuses tiles, corrects color, and stabilizes drift. The Labs for Refiner node is where the author keeps the stuff that's too new or too opinionated to be a default - the "home for ETUR experimental tools," per the node's own description. It's a config bus: you don't wire images into it, you plug it into the refiner (it's an output node whose labs_refiner pipe the refiner consumes) and it overrides how fusion, inpainting, and color behave.

Most of the inputs default to safe values and can stay that way. The ones worth understanding before you touch them:

The fusion and inpainting guts

  • Tile_Fusion_Blend (0.5) - the fusion margin with neighboring tiles. Lower = less risk of overlap artifacts; higher = softer blending but you invite visible seams. This is the "how much of the border region gets re-sampled" dial, and it's the first thing to try if your tiles show hard edges.
  • Fusion_end (0, range −50 to 0) - a step from the end after which fusion is skipped. With 20 total steps and −10, fusion runs only from step 1 to 10, then the sampler finishes free. It's a speed/quality trade: fusion is what keeps tiles agreeing, so cutting it early speeds things up but lets tiles drift in the tail.
  • Fusion_conditioning (on) - on, fusion uses both conditioning and the noise mask; off, it works with the noise mask alone.
  • LanPaint (on) - TBG's "Universal Inpainting Sampler with Think Mode," the split-aware sampler that underlies the fusion. Leave it on; turning it off changes the sampling path entirely.
  • Differential_Diffusion (on) - sigma-aware denoising where the mask's allowed region changes as steps progress. This is the same differential diffusion the pack's author wrote whole posts about fixing in ComfyUI (the split-sigma latent-mask bug), so it's genuinely where ETUR's inpainting quality comes from.

The color and reference extras

  • Flux2_Tile_Color_Correction (on) - keep on; the refiner expects it unless you're deliberately testing.
  • Flux2_Sampler_Hook (off) - off uses the normal VAE encode + Set Latent Noise Mask path; on uses the legacy/private Flux2 differential sampler hook. Unless you know you want the old path, leave it off.
  • Color & Structure Stabilizer (0, experimental) - a grid of anchor points that fights color and structure drift across tiles. It's labeled experimental for a reason; try it when tiles slowly wander in color, and don't expect it to fix a broken source.
  • cropped_positive / cropped_negative - optional full-image conditioning that ETUR crops per tile, Ultimate SD Upscale style. This is how you get crop-aware prompts without a ControlNet pipe.
  • Segment_Background_Harmonization (on) - matches generated segment surroundings to the finished tile canvas, protecting the object core. Off if a segment's background isn't matching.

Plus the plumbing: PID_Model (override the auto-loaded PiD), ColorMatch_Debug (plug in the debug gates node), Custom_Sigmas_!DENOISE=1 (a full sigma curve - denoise is handled per tile, so give it an un-denoised curve), Sampler (override with a custom/ClownSampler), Ideogram4_Guider, stitch_blending (gpupyramid/cpupyramid - the GPU Laplacian pyramid compositor is the default for a reason), max_upscale_size_segment (2048 cap on segment upscale size), and Save_Tiles_in_Temp_Folder (drops full-res tiles into temp/TBG/compareTiles/ for in-process previews).

Installing it

Ships in the TBG ETUR pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Ltamann/ComfyUI-TBG-ETUR
cd ComfyUI-TBG-ETUR
pip install -r requirements.txt

Or ComfyUI Manager → search "TBG" → TBG_Enhanced Tiled Upscaler & Refiner FLUX PRO, restart.

Notes

Treat this node as a debug-and-tune panel, not a daily driver. The defaults are the author's opinion of what works; every knob here trades one artifact for another. The one habit worth adopting: when a refined image has a fusion seam you can't explain, connect Labs for Refiner, cut Fusion_end to something like −10, and watch whether the seam appears in the freed tail steps - that single experiment tells you whether your problem is fusion or sampling. And remember the pack is beta and updated daily; a Labs knob that does nothing today may do something next week. That's the nature of the room.

CategoryTBG/ETUR Tiled Upscaler and Refiner

Inputs (24)

NameTypeDefaultDescription
Tile_Fusion_BlendFLOAT1.00-1–1Adjusts the pre-sampling border-correction mask as a fraction of Fusion Blur. 0.0 keeps the original mask; positive values move the transition inward; negative values move it outward. 1.0 equals one full Fusion Blur width.
Fusion_endINT0-50–0Step number from the end after which fusion is skipped. For example, with 20 total steps, setting -10 means fusion runs only from step 1 to 10.
Fusion_conditioningCOMBOInpainting On with Noise Mask and ConditioningSelect whether fusion uses inpainting conditioning, a noise mask, both, or neither. With the ETUR/LanPaint split-aware sampler, the inpaint mask also drives sigma-aware original-latent injection to preserve protected tile context.
Differential_DiffusionBOOLEANtrueControls the denoise mask dynamically across sampling steps based on sigma. It decides where denoising is allowed; it does not itself restore the original latent. ETUR/LanPaint split-aware injection can use this changing mask to preserve protected tile context, so the two features are complementary.
Sigma_Jump_EnabledBOOLEANfalseExperimental ETUR split-aware feature: deliberately lets the sampler use a modified sigma curve while TBG's internal sigma logic keeps the original curve. OFF preserves normal sampling.
Sigma_Jump_StrengthFLOAT0.00-1–1Experimental sigma mismatch intensity. Positive values raise sampler sigmas and add noise; negative values lower them. The effect is applied proportionally within the selected window.
Sigma_Jump_StartFLOAT0.000–1Normalized sampling position where the experimental sigma mismatch begins: 0.0 is the first step and 1.0 is the last.
Sigma_Jump_EndFLOAT1.000–1Normalized sampling position where the experimental sigma mismatch ends: 0.0 is the first step and 1.0 is the last.
Flux2_Tile_Color_CorrectionBOOLEANtrueEnable the selected Color Match correction for all refiner model types. If this Labs node is not connected, the refiner keeps this enabled by default.
Flux2_Sampler_HookBOOLEANfalseOFF: use normal VAE encode plus ComfyUI Set Latent Noise Mask. ON: use the legacy/private Flux2 differential sampler hook.
Color & Structure StabilizerFLOAT0.000–1Uses a grid of anchor points to stabilize color and structure, reducing drift and preserving spatial coherence. Experimental feature.
Save_Tiles_in_Temp_FolderBOOLEANfalseFor full-resolution in-process previews, tiles are saved to temp/TBG/compareTiles/
stitch_blendingCOMBOgpupyramid2 options: gpupyramid, cpupyramid
Content_Aware_Laplacian_SeamBOOLEANtrueRoute the Laplacian feather seam through the minimum-difference path between the tile and its processed neighbors.
VL_Encoding_ModeCOMBOInner Tile + Global Embedding5 options: Off, Global Embedding, Tile Embedding, Tile + Global Embedding, Inner Tile + Global Embedding
max_upscale_size_segmentINT2048256–4096
PID_ModeloptMODELPiD models are auto-loaded from Hugging Face when available. This optional input lets you override that auto-selected PiD model with your own PiD model compatible with the main model and VAE used by the refiner.
ColorMatch_Debugopttbg_colormatch_debugOptional developer pipe for isolating individual ETUR ColorMatch stages.
Custom_Sigmas_!DENOISE=1optSIGMASInsert your full custom sigma noise curve (not denoised), as denoising is performed per tile by the node.
SampleroptSAMPLERPlug in a custom sampler or ClownSampler here to override the sampler selected in the refiner node.
Ideogram4_GuideroptGUIDER
cropped_positiveoptCONDITIONINGOptional full-image positive conditioning for crop-aware tile sampling. Provide conditioning for the full reference/source image; ETUR crops the matching region for each tile and appends it to the tile's normal positive prompt/reference conditioning. It does not overwrite the normal conditioning. If you do not want to use the ETUR ControlNet pipe, you can use cropped conditioning in a similar way to Ultimate SD Upscale, including conditioning that already contains ReferenceLatent inputs.
cropped_negativeoptCONDITIONINGOptional full-image negative conditioning for crop-aware tile sampling. Provide conditioning for the full reference/source image; ETUR crops the matching region for each tile and appends it to the tile's normal negative conditioning. It does not overwrite the normal conditioning. If you do not want to use the ETUR ControlNet pipe, you can use cropped conditioning in a similar way to Ultimate SD Upscale, including conditioning that already contains ReferenceLatent inputs.
Segment_Background_HarmonizationoptBOOLEANtrueLow-frequency color/tint correction for generated segment surroundings. Protects the object/core mask while matching the segment background to the finished tile-only canvas.

Outputs (1)

NameTypeDescription
output_1labs_refiner