pre_ic_light_sd15
IC-Light relighting for SD1.5 ā deprecated, and here's why
- context
- fore_img
- bg_img
- light_img
- context
- light_img
This node wires lllyasviel's IC-Light relighting model into Apt_Preset's context chain, restricted to SD1.5. It's also filed under the pack's own "Deprecated" category - and in this specific case, that lines up neatly with what happened to IC-Light itself in the wider community, not just an internal pack reshuffle.
What IC-Light is, briefly
IC-Light is a diffusion-based relighting model: hand it a subject and a lighting setup, and it re-lights the image - including the background implied by that lighting - while leaving material and structure alone. It was genuinely impressive when it shipped in 2024 and won an ICLR 2025 Oral. But the code hasn't changed since the day after release; every commit since has been a README edit. It's a finished, frozen model, not an actively developed one, and the community's relighting workflows have largely moved on to instruction-editing models - Qwen-Image-Edit and Flux 2 Klein both now handle "relight this" as a plain-language prompt, and dedicated relight LoRAs for those models have taken over most of what IC-Light used to do alone. IC-Light still has one real advantage instruction editors don't - it changes only illumination and leaves the rest of the pixels untouched, where a whole-frame edit model re-emits everything and drifts slightly - but that's a narrow, specific case (product catalogs, anything where consistency matters more than flexibility), not the default reach-for-it choice it was in 2024.
This node being deprecated inside Apt_Preset is consistent with that broader picture: an SD1.5-only wrapper around a model the ecosystem has mostly moved past.
How it worked
bg_unet and fo_unet point at the two official IC-Light SD1.5 variants - iclight_sd15_fbc_unet_ldm.safetensors (foreground+background conditioned) and iclight_sd15_fc_unet_ldm.safetensors (foreground conditioned). multiplier (0ā1, default 0.18) is IC-Light's own light-source strength control. You'd feed it a foreground image, optionally a background and a light-direction reference image, and it would return a relit result through the pack's context chain.
Inputs and outputs
- context (required) - the
RUN_CONTEXTchain. - bg_unet / fo_unet - the two IC-Light SD1.5 unet checkpoints; neither ships with the pack, you'd need to download them separately and place them where ComfyUI's unet loader looks.
- multiplier - 0ā1, default 0.18. Light strength.
- fore_img / bg_img / light_img (all optional
IMAGE) - subject, background, and a lighting reference.
Outputs: context and light_img (IMAGE).
What to use instead
If you're relighting on a modern base and starting fresh, the current community answer is an instruction-editing model with a relight LoRA (Qwen-Image-Edit is the one most people reach for) or Flux 2 Klein, which treats lighting as a primary prompt axis rather than something bolted on afterward. If your job specifically needs pixel-identical output outside the relit region - a product catalog is the clean example - IC-Light (used directly, not necessarily through this specific deprecated wrapper) is still the more honest tool for that narrow case.
Installing the pack
If you want Apt_Preset for its active nodes, ComfyUI Manager is the easy route: search "ComfyUI-Apt_Preset", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git
Restart afterward, and run install.bat on Windows or the equivalent pip install from the requirements file on Linux/Mac.
Common issues
bg_unet/fo_unet dropdowns are empty. These are model files you have to source and place yourself - the pack doesn't bundle IC-Light's weights. An empty dropdown means ComfyUI hasn't found either file in your unet models folder.
Result doesn't look like a proper relight, more like a filter. IC-Light's actual strength is treating lighting as a render, not a post-effect - if you're seeing flat, filter-like results, double check multiplier and that you're feeding an appropriate light reference; a mismatch there tends to produce shallow, unconvincing lighting changes rather than the model's real output.
Looking for this in the main node menu and not finding it easily. It's filed under the pack's deprecated category now - check there, or just skip it and use whatever modern relighting path fits your base model instead.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| context | RUN_CONTEXT | ā | |
| bg_unet | COMBO | iclight_sd15_fbc_unet_ldm.safetensors | 0 options: |
| fo_unet | COMBO | iclight_sd15_fc_unet_ldm.safetensors | 0 options: |
| multiplier | FLOAT | 0.180ā1 | ā |
| fore_imgopt | IMAGE | ā | |
| bg_imgopt | IMAGE | ā | |
| light_imgopt | IMAGE | ā |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| context | RUN_CONTEXT | ā |
| light_img | IMAGE | ā |