DetailerHookCombine
Stack two detailer hooks into one wire
- hook1
- hook2
- DETAILER_HOOK
DetailerHookCombine is a small plumbing node with exactly one purpose: it merges two DETAILER_HOOKs into a single hook you can plug into a detailer. Two hooks in, one hook out. That's the whole node. It exists because most detailer nodes have a single detailer_hook input, and sometimes you want two hooks acting at once.
A quick step back on what a detailer hook even is. Several Impact Pack nodes accept a DETAILER_HOOK - an optional add-on that modifies how a detailer processes each region as it goes. There are hooks that inject noise for variation, hooks that ramp the denoise across cycles, hooks that pin the crop to CoreML-friendly sizes, hooks that apply filters. Each is a separate provider node emitting one hook. But a detailer only has one slot. If you want, say, a noise-injection hook and a denoise-schedule hook on the same detail pass, you need to fuse them first - and this is the node that does it.
How it works
You wire one hook into hook1 and another into hook2, and the node returns a combined DETAILER_HOOK that behaves as both. When the detailer runs, it invokes the combined hook, which runs hook1's behavior and then hook2's. Order is defined - hook1 first - which occasionally matters for hooks that expect to act before or after another. Need three? Chain combines: feed a combined hook back into another DetailerHookCombine alongside a third. It's the same pattern as the pack's PixelKSampleHookCombine for the upscaler side.
The inputs and outputs that matter
There's nothing to tune - it's pure connection:
hook1(required) - the first detailer hook. Runs first.hook2(required) - the second detailer hook. Runs after.
Output:
DETAILER_HOOK- the fused hook, ready to plug into any detailer'sdetailer_hookinput (or into another DetailerHookCombine to stack a third).
That's genuinely it. No sliders, no modes.
How to install it
Install the pack via ComfyUI Manager (search ComfyUI Impact Pack, install, restart), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack comfyui-impact-pack
cd comfyui-impact-pack
python -m pip install -r requirements.txt # ComfyUI's python; python_embeded on portable
then restart. No models. The hooks you feed it come from other Impact Pack provider nodes (noise injection, denoise scheduler, and so on) - some of those have their own dependencies (the noise-injection hooks need BlenderNeko's ComfyUI_Noise; the Lama remover hook needs the comfyui-lama-remover pack), but the combine node itself has none.
Common issues & troubleshooting
One of my hooks doesn't seem to take effect. Order matters, and some hooks have documented interactions when combined. The clearest example from the pack's own notes: with a custom-sampler hook, only the first hook's sampler is used; and with the Lama remover hook, skip_sampling only applies if it's set on all combined hooks. If a combined hook behaves unexpectedly, try swapping which one is hook1.
Nothing to connect. The inputs are strictly DETAILER_HOOK type - you can't feed arbitrary nodes in. Add the hook provider nodes you actually want (e.g. NoiseInjectionDetailerHookProvider, DenoiseSchedulerDetailerHookProvider) and wire their outputs here.
Do I need this for a normal face fix? No. Hooks are an advanced tuning layer; a plain detailer with no hook is the default and it's fine. Reach for combine only when you've decided you want two hook behaviors on one pass - otherwise it's just extra wiring.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| hook1 | DETAILER_HOOK | — | |
| hook2 | DETAILER_HOOK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| DETAILER_HOOK | DETAILER_HOOK | — |