TBG ETUR Enrichment Pipe
The detail injector hiding inside the refiner
- Enrichment_Pipe
- INFO
A plain upscale gives you pixels; an ETUR refinement is supposed to give you texture. That extra "crispness" doesn't come from nowhere - it comes from the Enrichment Pipe, a config node that tells the refiner how aggressively to sharpen, inject detail, and rescale tiles during sampling. If the refiner is the engine, this is the tuning box bolted to it.
The node does three jobs, and it's worth knowing which is which because the inputs are grouped that way.
Resharpener: the controlled sharpen pass
Resharpener_active (off by default) enables a resharpen stage that runs over the resharpen_start→resharpen_end step window (defaults 0→1, i.e. the whole sample) at Resharpener_strength (default 0.5, range −5 to 5). Negative strengths push it into smoothing territory. This is the "make the final image snap" control - start here if your upscale comes out soft.
Detail Daemon: the noise-injection engine
This is the ETUR signature feature, the descendant of what the changelog calls "similar to Res2M part-step noise injection for enhancing details on every sampler." With detail_daemon_active on, it injects structured detail into a specific step window - detail_daemon_start 0.12 → detail_daemon_end 0.3 by default, which means early-to-mid sampling, before the image locks in. The useful knobs:
- detail_amount (default 1.17) - how much detail to inject. This is the main dial.
- detail_daemon_bias (0.5) / detail_daemon_exponent (0.8) - shape the injection curve.
- detail_daemon_cfg_scale (1.0) - how hard the detail push is weighted against the model's own output.
- detail_daemon_fade, detail_daemon_smooth - soften the effect at the window edges.
One honest note from the author's own changelog: activating this enrichment path switches the sampler to Euler Ancestral automatically - or to RES2M, if you have the RES4LYF sampler pack installed. So if your workflow changes sampler under you, that's this node, not a bug.
Tile/segment upscaling and complexity denoise
- tile_upscale_plus (
none/finer details) - withfiner details, tiles are upscaled in pixel space before sampling and downsampled after, so the model renders at higher effective detail. Pairs withupscaler_method_inpainting/upscale_model_inpainting(the model dropdown appears when you pick "with model") and theupscale_tiles_by/upscale_segments_byfactors. - PRO_Fusion_Complexity_min_Denoise (0.2) / max_Denoise (1.0) - clamp the per-pixel complexity map's denoise range, the same idea as the standalone mask helpers. Set min above max to invert the map.
Outputs are Enrichment_Pipe (into the refiner's optional input of the same name) and INFO (a string dump for debugging).
Installing it
Part of 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
Start with the Resharpener, not the Detail Daemon. The daemon is the more dangerous tool - at high detail_amount it can start inventing texture that reads as noise, especially on skies and skin, which is exactly the failure the upscaling docs keep warning about. A sane first pass is Resharpener at 0.3–0.5 with the daemon off; add the daemon only if the result is still too smooth. And remember the node is pure configuration - it costs nothing to leave connected with everything off, so it's safe to keep in the graph while you tune the rest of the pipeline.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| Resharpener_active | BOOLEAN | false | — |
| Resharpener_strength | FLOAT | 0.50-5–5 | — |
| resharpen_start | FLOAT | 0.000–1 | — |
| resharpen_end | FLOAT | 1.000–1 | — |
| detail_daemon_active | BOOLEAN | false | — |
| detail_amount | FLOAT | 1.17-5–5 | — |
| detail_daemon_start | FLOAT | 0.120–1 | — |
| detail_daemon_end | FLOAT | 0.300–1 | — |
| detail_daemon_bias | FLOAT | 0.500–1 | — |
| detail_daemon_exponent | FLOAT | 0.800–10 | — |
| detail_daemon_start_offset | FLOAT | 0.00-1–1 | — |
| detail_daemon_end_offset | FLOAT | 0.00-1–1 | — |
| detail_daemon_fade | FLOAT | 0.000–1 | — |
| detail_daemon_smooth | BOOLEAN | true | — |
| detail_daemon_cfg_scale | FLOAT | 1.00–100 | — |
| tile_upscale_plus | COMBO | none | 2 options: none, finer details |
| upscaler_method_inpainting | COMBO | bilinear | 7 options: area, bicubic, bilinear, bislerp, lanczos, nearest-exact, +1 |
| upscale_model_inpainting | COMBO | 0 options: | |
| upscale_tiles_by | FLOAT | 1.00.5–4 | — |
| upscale_segments_by | FLOAT | 1.00.5–4 | — |
| PRO_Fusion_Complexity_min_Denoise | FLOAT | 0.200–1 | (crops Complexity denoise min) Sets the min denoise level mainly on low-complexity areas. If the minimum value is greater than the maximum, the map is inverted. |
| PRO_Fusion_Complexity_max_Denoise | FLOAT | 1.000–1 | (crops Complexity denoise min) Sets the mx denoise level mainly on high complexity areas. If the minimum value is greater than the maximum, the map is inverted. |
| PRO_Fusion_Complexity_Mask_Blur | FLOAT | 0.000–1 | apply blur and adjust the sensitivity of the Complexity Mask |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| Enrichment_Pipe | Enrichment_Pipe | — |
| INFO | STRING | — |