Nodes/BV Node Pack/πŸŒ€ BV Detailer Loop Job Resolver
ComfyUI Node

πŸŒ€ BV Detailer Loop Job Resolver

The node that turns one loop step into a real detail job

By BlackVortexAIΒ·Created 9 months agoΒ·Updated 3 days agoΒ· 7
πŸŒ€ BV Detailer Loop Job Resolver
  • loop_state
  • model
  • clip
  • vae
  • detailer_job
  • current_image
  • region_mask
  • basic_pipe
β—„global_influence1.00β–Ί
β—„background_influence0.35β–Ί
β—„primary_region_influence1.00β–Ί

Of the six nodes in the BV Detailer Loop, this is the one doing the actual thinking. BV Detailer Loop Job Resolver takes the loop state, figures out which job is current, and turns it into everything an Impact detailer needs: a composed region mask, the current image, and a ready-to-use BASIC_PIPE with positive and negative conditioning compiled from your regional prompts.

If you've read the Impact Pack docs on Detailer (SEGS), you know the loop underneath all of this is just detect β†’ crop β†’ re-render β†’ paste back. The Resolver is where "re-render" stops being a blank and starts being your regional conditioning. It's the node that makes each region detail with its own prompt context instead of one global prompt applied to everything.

How it works

The Resolver reads job_index out of the loop_state, pulls the matching job from the plan, and does three things:

  1. Composes the mask. Each job is built from one or more regions. Their masks combine per the plan's mask_composition - union (default), intersection, or subtract.
  2. Compiles the conditioning. It encodes Global, Background, and the primary region's prompts, plus any context regions, weighted by the influence values. This is why a face region gets "detailed face, sharp eyes" while a character region gets its own full prompt.
  3. Bundles a BASIC_PIPE = (model, clip, vae, positive, negative) - Impact's standard carrier, so you can feed MaskDetailer (pipe) or Detailer (SEGS/pipe) directly without a separate ToBasicPipe node.

Inputs that matter

  • loop_state (BV_DETAILER_LOOP_STATE) - from BV Detailer Loop Start. Never set this by hand.
  • model, clip, vae - the same checkpoint family that generated the image. Wire these straight from your loader.
  • global_influence (default 1.0), background_influence (0.35), primary_region_influence (1.0) - these weight how much each prompt scope contributes to the detail pass. The defaults are sane: global fully in, background pulled back so it doesn't fight the region, primary region driving. A per-job conditioning block in the plan overrides these.

Outputs and where they go

  • detailer_job (BV_DETAILER_JOB) β†’ BV Detailer Loop Detect to SEGS (Impact). Carries the region identity and any assigned detector.
  • current_image (IMAGE) β†’ Detect-to-SEGS and the Impact Detailer. This is the image accumulated from earlier jobs.
  • region_mask (MASK) β†’ Detect-to-SEGS. The exact composed mask at full image resolution.
  • basic_pipe (BASIC_PIPE) β†’ Impact Detailer (SEGS/pipe). Model, CLIP, VAE and the freshly compiled conditioning, all in one wire.
BV Detailer Loop Job Resolver.detailer_job / current_image / region_mask
    --> BV Detailer Loop Detect to SEGS (Impact)
BV Detailer Loop Job Resolver.current_image / basic_pipe
    + Detect-to-SEGS.segs --> Impact Detailer (SEGS/pipe)

Installing and dependencies

Part of BV Node Pack - Manager search "BV Node Pack", or:

cd ComfyUI/custom_nodes
git clone https://github.com/BlackVortexAI/bv_nodepack.git

Restart and hard-refresh (Ctrl+F5). Because this node emits BASIC_PIPE and feeds Impact's detailers, you need ComfyUI-Impact-Pack installed for the downstream half of the loop. The plan and mask contracts themselves are package-neutral - the Resolver doesn't import Impact internals - but the detailer you wire it into does.

Common issues

  • "requires a single IMAGE shaped B,H,W,C". The Resolver, like the Impact detailers it feeds, handles one image per run. Feed batch 1 only.
  • Output looks identical to the input. A detail pass that's genuinely under-resolved is the canonical use; if your face is already large and sharp, the pass changes it without improving it - the community verdict on detailing is "turn it off for anything already big." Consider whether the region actually needs the pass.
  • Region mask empty. A job with a mask that renders empty (say, a subtract that eats everything) fails at detect time. Check the mask output with a preview node.

The Resolver is the node you'll actually tune. If the loop runs but regions look wrong, this is where you start - influence weights, then the plan's per-job conditioning.

CategoryπŸŒ€ BV Node Pack/regional/detailer

Inputs (7)

NameTypeDefaultDescription
loop_stateBV_DETAILER_LOOP_STATEβ€”
modelMODELβ€”
clipCLIPβ€”
vaeVAEβ€”
global_influenceFLOAT1.000–2β€”
background_influenceFLOAT0.350–2β€”
primary_region_influenceFLOAT1.000–2β€”

Outputs (4)

NameTypeDescription
detailer_jobBV_DETAILER_JOBβ€”
current_imageIMAGEβ€”
region_maskMASKβ€”
basic_pipeBASIC_PIPEβ€”