Nodes/ComfyUI Impact Pack/DetailerHookCombine
ComfyUI Node Runs on cloud

DetailerHookCombine

Stack two detailer hooks into one wire

By ltdrdata·Created 3 years ago·Updated 4 months ago· 3,242
DetailerHookCombine
  • 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's detailer_hook input (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.

CategoryImpactPack/Upscale

Inputs (2)

NameTypeDefaultDescription
hook1DETAILER_HOOK
hook2DETAILER_HOOK

Outputs (1)

NameTypeDescription
DETAILER_HOOKDETAILER_HOOK