TBG ETUR Labs for Refiner
The experimental panel where tile fusion gets weird (in a good way)
- PID_Model
- ColorMatch_Debug
- Custom_Sigmas_!DENOISE=1
- Sampler
- Ideogram4_Guider
- cropped_positive
- cropped_negative
- output_1
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.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| Tile_Fusion_Blend | FLOAT | 1.00-1–1 | Adjusts 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_end | INT | 0-50–0 | Step 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_conditioning | COMBO | Inpainting On with Noise Mask and Conditioning | Select 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_Diffusion | BOOLEAN | true | Controls 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_Enabled | BOOLEAN | false | Experimental 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_Strength | FLOAT | 0.00-1–1 | Experimental 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_Start | FLOAT | 0.000–1 | Normalized sampling position where the experimental sigma mismatch begins: 0.0 is the first step and 1.0 is the last. |
| Sigma_Jump_End | FLOAT | 1.000–1 | Normalized sampling position where the experimental sigma mismatch ends: 0.0 is the first step and 1.0 is the last. |
| Flux2_Tile_Color_Correction | BOOLEAN | true | Enable 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_Hook | BOOLEAN | false | OFF: use normal VAE encode plus ComfyUI Set Latent Noise Mask. ON: use the legacy/private Flux2 differential sampler hook. |
| Color & Structure Stabilizer | FLOAT | 0.000–1 | Uses a grid of anchor points to stabilize color and structure, reducing drift and preserving spatial coherence. Experimental feature. |
| Save_Tiles_in_Temp_Folder | BOOLEAN | false | For full-resolution in-process previews, tiles are saved to temp/TBG/compareTiles/ |
| stitch_blending | COMBO | gpupyramid | 2 options: gpupyramid, cpupyramid |
| Content_Aware_Laplacian_Seam | BOOLEAN | true | Route the Laplacian feather seam through the minimum-difference path between the tile and its processed neighbors. |
| VL_Encoding_Mode | COMBO | Inner Tile + Global Embedding | 5 options: Off, Global Embedding, Tile Embedding, Tile + Global Embedding, Inner Tile + Global Embedding |
| max_upscale_size_segment | INT | 2048256–4096 | — |
| PID_Modelopt | MODEL | PiD 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_Debugopt | tbg_colormatch_debug | Optional developer pipe for isolating individual ETUR ColorMatch stages. | |
| Custom_Sigmas_!DENOISE=1opt | SIGMAS | Insert your full custom sigma noise curve (not denoised), as denoising is performed per tile by the node. | |
| Sampleropt | SAMPLER | Plug in a custom sampler or ClownSampler here to override the sampler selected in the refiner node. | |
| Ideogram4_Guideropt | GUIDER | — | |
| cropped_positiveopt | CONDITIONING | Optional 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_negativeopt | CONDITIONING | Optional 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_Harmonizationopt | BOOLEAN | true | Low-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)
| Name | Type | Description |
|---|---|---|
| output_1 | labs_refiner | — |