ICLightAppply
The Node That Makes IC-Light 'Native' in ComfyUI
- model
- ic_model
- c_concat
- MODEL
The class name has a typo - "Appply", double p - and the category field says _for_testing. Neither is a joke. This is the node that gives the whole pack its name: where the "native" in ComfyUI-IC-Light-Native actually happens.
IC-Light is lllyasviel's relighting model: it takes a foreground subject and a lighting description (or light map, or background) and re-lights the image consistently, albedo and structure left alone. The mainstream ComfyUI route - kijai's ComfyUI-IC-Light - wraps the model through diffusers. This pack takes a different path: the IC-Light UNet weights are converted to ldm state-dict keys, loaded with a plain UNETLoader, and patched straight onto your loaded SD 1.5 checkpoint. No diffusers, no extra dependencies, native tensors. ICLightAppply is the fusion point.
How it works
The mechanism is worth understanding because it explains every error you'll hit. The node:
- Clones your base model so nothing upstream is mutated.
- Takes the
c_concatlatent (your encoded foreground, plus a light map or background on the FBC path) and scales it by the model's latent scale factor. - Injects those condition channels into the UNet call at every step via a
model_function_wrapper. - Adds the IC-Light state dict as patches onto the cloned model - with a special flag to pad the first convolution's input width.
That last part is the load-bearing detail. A stock SD 1.5 UNet's first conv takes 4 channels. IC-Light's UNet expects more - that's how the extra condition (foreground, light map, background) gets in. The FG model takes 4 extra channels (8 total); the BG model takes 8 extra (12 total). Load the wrong model for your workflow and the channel counts won't line up.
The inputs that matter
Three required, all wired in the pack's bundled examples (fg.json, fg_bg_combine.json):
- model (MODEL) - the MODEL output of your
CheckpointLoaderSimple. Any SD 1.5 checkpoint works; IC-Light composes with the base rather than replacing it. - ic_model (MODEL) - the IC-Light UNet loaded via
UNETLoader:iclight_sd15_fc_unet_ldmfor foreground workflows,iclight_sd15_fbc_unet_ldmwhen a background supplies the lighting context. - c_concat (LATENT) - the encoded condition. Build it with
VAEEncodeArgMaxfed byICLightApplyMaskGrey- the grey-filled foreground is the single most important precondition for a clean relight.
Output: a single MODEL, which goes into KSampler as your active model. That's the whole loop.
Install and models
cd ComfyUI/custom_nodes
git clone https://github.com/huchenlei/ComfyUI-IC-Light-Native
Restart ComfyUI. The node code needs nothing beyond ComfyUI itself - no requirements.txt in this repo, which is the point of "native." The weights are the separate step. Download the ldm-converted models from huchenlei/IC-Light-ldm, drop them in ComfyUI/models/unet, and load them with UNETLoader - not Load Checkpoint, not DiffusersLoader. That conversion-to-ldm step is what makes this pack different from the diffusers wrappers.
Common issues
- Channel-count RuntimeErrors. The README warns about exactly two, and it garbles its own captions - both error blocks are labeled "FG workflow but loaded the BG model," which can't both be right. Trust the numbers: a
weight of size [320, 8, 3, 3]is the FG model,[320, 12, 3, 3]is the BG model, and the input channel count tells you what your workflow built. Mismatch = wrong model for your c_concat layout. Load the fc model when your workflow passes one condition latent, fbc when it passes two. - Skipping the grey fill. If your background comes out obscured or darkened, the README's own first instruction is that the masked/transparent area must be grey before it reaches the VAE. That's
ICLightApplyMaskGrey's job, and it has to run beforec_concatis encoded. - Expecting an instruction editor. It's worth setting expectations: IC-Light V1 is frozen since May 2024, and in 2026 most general relighting moved to Qwen-Image-Edit and Flux 2 Klein. The case that still argues for this pack - and for this node - is batch product work where logos, stitching and label text must not drift, because IC-Light alters illumination by construction and leaves the subject alone.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ic_model | MODEL | — | |
| c_concat | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |