ComfyUI Node

ER Combine

The compositor that makes the ER light passes actually useful

By esperandoelrender·Created 2 days ago·Updated 2 days ago· 0
ER Combine
  • base
  • layer_1
  • layer_2
  • layer_3
  • layer_4
  • images
params{}

The ER suite's light nodes - ER Glow, ER Lens Flare, ER Lens Camera Dirt, ER Regrain - all give you a second output: the effect as a layer over black (or mid-gray), separate from the composited result. That's only useful if you have a way to stack layers properly. ER Combine is that way.

It's a layer compositor in one node, from the ER VFX Nodepack by Héctor Gallego (ER Academy): a base image with up to four layers stacked on top, each with its own blend mode and opacity, live preview included. If you've ever tried to fake this with ComfyUI's stock math nodes - a mode node here, an alpha node there, and a different chain for every frame of a video - you'll appreciate having it as one drop-in that also shows you the result before you run.

The inputs that matter

  • base - the bottom image the layers stack on. Feed it your clean generation.
  • layer_1 through layer_4 - they appear dynamically: connect layer_1 and layer_2 shows up, and so on. Each layers in order, so layer_4 is on top.
  • A params string carries per-layer blend mode and opacity from the UI.

Blend modes: normal, add, screen, multiply, overlay, soft light, difference, lighten, darken. That's the short list that matters in practice, and the node's own docs give the right instinct for the ER passes:

  • RGB light layers over pure black (flare_layer, glow_layer, dirt_layer) → add or screen. Add is linear light - physically closest to real light - while screen protects highlights.
  • The grain layer (mid-gray, from ER Regrain's grain_layer) → overlay, or linear light at low opacity.
  • RGBA layers - the *_layer_alpha outputs - composite with their own per-pixel alpha under any normal blend.

Layers of a different size are scaled to the base automatically, and a single-frame layer is reused across all frames of a batch, which is exactly what you want when grading a video.

The preview is the point

What you see in the node is computed with the same operations as the render, so "what you see is what you export" is literal here. The A|B toggle flips between composite and raw base in one click - the fastest way to check whether a pass is actually helping. When you run, the composite comes out the images output at full resolution, per frame.

Typical pipeline

Generation → ER Combine: base into base, flare_layer / dirt_layer / glow_layer into the layer inputs, mode set to add, done. It's also the natural end of the "edit-model round trip": instead of sending an edit model a full-bleed glow that repaints everything, you feed it the clean *_layer (no alpha - edit models dislike RGBA), get the edit back, and composite it here.

Installing

ER Combine is part of the ER VFX Nodepack. ComfyUI Manager → search "ER VFX Nodepack" → install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/esperandoelrender/ComfyUI-ER-VFX-Nodepack.git

Restart, find it under image/adjust (search "ER Combine"). No extra dependencies, no models to download. If you previously installed the standalone er_combine pack this grew from, delete it first so the node doesn't register twice.

One honest limitation: it's four layers, period. If you need a twenty-layer Photoshop session you want a real compositor, but for "base plus a couple of light passes," which is most ComfyUI finishing work, this is the cleanest single node around.

Categoryimage/adjust

Inputs (6)

NameTypeDefaultDescription
baseIMAGEBottom image: the layers stack on top of this.
layer_1optIMAGELayer 1: composited over the result of the previous ones. RGBA layers use their own alpha.
layer_2optIMAGELayer 2: composited over the result of the previous ones. RGBA layers use their own alpha.
layer_3optIMAGELayer 3: composited over the result of the previous ones. RGBA layers use their own alpha.
layer_4optIMAGELayer 4: composited over the result of the previous ones. RGBA layers use their own alpha.
paramsoptSTRING{}

Outputs (1)

NameTypeDescription
imagesIMAGE