IC-Light Light Shape
Paint the light map IC-Light actually reads
- base_image
- image
IC-Light - lllyasviel's relighting model, the same author behind ControlNet and Forge - can take a literal light map as guidance for where light comes from and what color it is: white is the light source, and the shape and position of that white region defines the lighting direction the model applies. LightShapeNode is a tool for making that map. Instead of hand-painting a blob of white in an image editor and importing it, you generate the shape procedurally - pick a shape, position it, size it, blur it, color it - right inside your ComfyUI graph.
Why this matters for IC-Light specifically
IC-Light's fbc checkpoint takes a background image as lighting context, and its fc path uses a coarser Lighting Preference control (left/right/top/bottom). A precise, custom light map sits between those two: more control than the four-direction preset, without needing a full background photo to derive lighting from. This node is built for feeding that map into a kijai/ComfyUI-IC-Light-style pipeline - construct the shape here, hand it to IC-Light's own conditioning node downstream.
One thing worth knowing: IC-Light itself is a frozen SD 1.5 model whose code hasn't changed since a day after its May 2024 release, and general "relight this image" work has mostly moved on to instruction editors like Qwen-Image-Edit and Flux 2 Klein. What IC-Light still does better is detail-preserving relighting - batch product shots, anything where the parts you're not touching can't be allowed to drift - and that's exactly where a controllable light map beats a vague text description of "light from the left."
How it works
You're compositing a shape onto a canvas: choose a shape, place it, scale it, rotate it, blur its edges, and set both the shape's color and the background color behind it. The result is a synthetic light map image - feed it as the light/background reference into your IC-Light conditioning step, and the model reads the bright shape as where the light comes from and its color as the light's color.
The inputs and outputs that matter
Canvas size, shape choice, and placement are the required inputs:
wide/height- canvas dimensions in pixels, default 512×512, range 0–5000. Match this to what your IC-Light pipeline expects downstream.shape- the light's silhouette:circle(default),square,semicircle,quarter_circle,ellipse,triangle,cross,star, orradial. Nine options, so you're not limited to a simple point source - acrossorstarshape can approximate window-light patterns or a more directional glow.X_offset/Y_offset- position the shape away from center, -10000 to 10000, default 0.scale- size the shape relative to its default, 0.1–10, default 1.rotation- 0–360 degrees, default 0. Matters for anything non-radially-symmetric liketriangleorcross.opacity- 0–1, default 1, how strong the light shape reads against the background.blur_radius- 0–1000, default 0. A hard-edged shape reads as a harsh, defined light source; blurring it softens the falloff into something closer to a diffuse light. This is one of the more important knobs for getting a natural-looking relight rather than an obviously synthetic one.background_color- hex string, default#000000(black).shape_color- hex string, default#FFFFFF(white) - this is the light's color, since IC-Light reads brightness and color from this map directly.
Optionally, base_image (IMAGE) lets you composite the light shape over an existing image instead of a flat background color, if your pipeline needs that.
One output: image - the generated light map, ready to feed into IC-Light's own nodes.
How to install it
Via ComfyUI Manager: search "ComfyUI-MingNodes," install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/mingsky-ai/ComfyUI-MingNodes
then restart. This node itself needs no models or extra downloads - but remember it's only half the pipeline. You still need IC-Light and a ComfyUI IC-Light implementation (the standard one is kijai/ComfyUI-IC-Light) installed separately to actually do anything with the light map this node produces; MingNodes doesn't ship IC-Light itself.
Common issues & troubleshooting
The relight looks like a flat color overlay, not real lighting. This is IC-Light's most common complaint in general, and a hard-edged, unblurred light shape makes it worse - a sharp synthetic edge reads as fake in a way a soft gradient doesn't. Push blur_radius up and see if the result reads as light rather than paint.
Skin tones shift warm/orange after the relight. A known IC-Light V1 behavior, not something this node causes or fixes - the standard downstream workaround is frequency separation (lighting from the IC-Light pass, detail from the original).
The light direction doesn't match where I placed the shape. Check X_offset/Y_offset against your actual canvas size (wide/height) - offsets are pixel values, so a large offset can push the shape partially or fully off-canvas, which IC-Light reads as a dim or off-axis light rather than what you intended.
Visible halos or a pasted-on edge once composited back onto the subject. A downstream compositing issue in the IC-Light/mask stage, not this node - choking the mask by a pixel and premultiplying alpha before the final composite is the standard fix.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| wide | INT | 5120–5000 | — |
| height | INT | 5120–5000 | — |
| shape | COMBO | circle | 9 options: circle, square, semicircle, quarter_circle, ellipse, triangle, +3 |
| X_offset | INT | 0-10000–10000 | — |
| Y_offset | INT | 0-10000–10000 | — |
| scale | FLOAT | 1.00.1–10 | — |
| rotation | INT | 00–360 | — |
| opacity | FLOAT | 1.00–1 | — |
| blur_radius | INT | 00–1000 | — |
| background_color | STRING | #000000 | — |
| shape_color | STRING | #FFFFFF | — |
| base_imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |