Nodes/ComfyUI-enricos-nodes/πŸ’œ Compositor Config (V3)
ComfyUI Node

πŸ’œ Compositor Config (V3)

The unglamorous node that decides how your canvas behaves

By erosDiffusionΒ·Created 2 years agoΒ·Updated about a month agoΒ· 635
πŸ’œ Compositor Config (V3)
  • image1
  • mask1
  • image2
  • mask2
  • image3
  • mask3
  • image4
  • mask4
  • image5
  • mask5
  • image6
  • mask6
  • image7
  • mask7
  • image8
  • mask8
  • config
  • extendedConfig
β—„width512β–Ί
β—„height512β–Ί
β—„padding100β–Ί
β—„normalizeHeightfalseβ–Ί
β—„onConfigChangedfalseβ–Ί
β—„invertMaskfalseβ–Ί
β—„initializedβ–Ί

Every Compositor setup starts here. CompositorConfig3 is the data feeder for the Compositor V3 canvas: it takes your up to 8 images and optional masks, merges each image/mask pair into an RGBA composite, and hands the whole bundle to the Compositor node over a COMPOSITOR_CONFIG socket. No canvas, no dragging - this is the boring backstage node, and the one where most of your "why does it look wrong" fixes live.

You'll almost always build the pair: Config β†’ Compositor. Connect its config output to the Compositor's config input, run once, and the canvas appears.

What to actually set

The fields that matter for a beginner:

  • width / height - canvas size in pixels (512 default, step 32). This is your export resolution, so set it to what you eventually want out, not what's comfortable on screen.
  • padding - extra space around the canvas (100 default). This is a genuinely useful idea: it's a parking zone where you can drag assets outside the export area or grab transform handles without leaving the canvas. The green border marks the actual export region.
  • normalizeHeight - scales every input to the same height. Great for quick moodboards, but the README warns it can lower quality. Leave it off unless you're in a hurry.
  • onConfigChanged - the pause toggle. With it off (default), changing the config stops the flow so you can compose. With it on, the compositor grabs a capture and keeps going. Remember this matters more than it looks: combined with a random seed upstream it can silently re-roll everything.
  • invertMask - flips the alpha on all your masks. If your cutout shows up inverted, this is the switch. Whether you need it depends entirely on which mask node produced your masks.

Then image1–image8 and mask1–mask8. Input order is z-order: image1 is the background/farthest, image8 is the foreground/closest. Every slot is optional, so you can start with one image and grow.

Outputs: config (the one the Compositor consumes) and extendedConfig, which carries the same data plus a copy of all raw inputs. The extended one is there for future/complex setups - wire config and move on.

Installing

Same as the rest of the pack - ComfyUI Manager, search "Compositor", pick the erosDiffusion one, or:

cd ComfyUI/custom_nodes
git clone https://github.com/erosDiffusion/ComfyUI-enricos-nodes.git

No models to download, no extra pip dependencies. Restart after installing.

Gotchas

The masks are baked into an RGBA image before the canvas ever sees them. That's convenient but means the Config node runs real image work: if you hook a mask up and it looks wrong, the fix is invertMask here, not in the canvas. And because changing any config input triggers the Compositor to stop and re-capture, don't tweak widgets mid-generation and expect the old output to survive. It's a "set it, run it, compose, continue" rhythm - once you accept that, the node behaves.

Categoryimage

Inputs (23)

NameTypeDefaultDescription
widthINT5120–16384β€”
heightINT5120–16384β€”
paddingINT1000–16384β€”
normalizeHeightBOOLEANfalseβ€”
onConfigChangedBOOLEANfalseβ€”
invertMaskBOOLEANfalseβ€”
initializedSTRINGβ€”
image1optIMAGEβ€”
mask1optMASKβ€”
image2optIMAGEβ€”
mask2optMASKβ€”
image3optIMAGEβ€”
mask3optMASKβ€”
image4optIMAGEβ€”
mask4optMASKβ€”
image5optIMAGEβ€”
mask5optMASKβ€”
image6optIMAGEβ€”
mask6optMASKβ€”
image7optIMAGEβ€”
mask7optMASKβ€”
image8optIMAGEβ€”
mask8optMASKβ€”

Outputs (2)

NameTypeDescription
configCOMPOSITOR_CONFIGβ€”
extendedConfigCOMPOSITOR_CONFIGβ€”