Nodes/Comfyui-LG_Relight/🎈LG Relight
ComfyUI Node

🎈LG Relight

Drag a light across your image and watch it re-light in real time

By LAOGOU-666·Created 2 years ago·Updated about a year ago· 217
🎈LG Relight
  • image
  • normals
  • IMAGE

You know how normal map relighting usually works in ComfyUI? You guess a direction, run it, look at the result, adjust, run again. LG Relight turns that loop into a single step: it opens an editor right in your browser where you click and drag a light source across your image and the lighting updates live. Find the angle that makes your subject pop, hit Apply, and the node hands you the relit image. No back-and-forth, no blind guessing.

It's the middle child of the LAOGOU-666 Relight pack - more hands-on than the slider-only Basic node, less elaborate than the multi-light Ultra. If you just want to relight one image until it looks right, this is the one you'll actually reach for.

How it works

The clever bit is where the work happens. The node takes your image and its normals map, base64-encodes both, and pushes them to the frontend over ComfyUI's websocket. There, a three.js scene renders your image on a flat plane lit by a virtual light. Drag the light around and the diffuse shading recomputes in real time - it's the same dot-product lighting math as the Basic node, but previewed in the browser instead of guessed at. When you hit Apply, the rendered frame is uploaded back to the node and returned as an IMAGE output, ready to wire into whatever comes next.

Two things follow from that design. First, the node is an output node and it blocks the queue - execution pauses while the editor is open, because the whole point is that you're deciding the light. Second, this is why it works on remote or cloud installs: the editor lives in the browser tab, not in an OS popup. The pack's early versions used a PyQt window for this, which was a nightmare on headless servers, and the author explicitly rebuilt it as an in-browser modal to "completely solve the popup window problem."

The inputs and output

Only two required inputs, and both are images:

  • image - what you want to relight.
  • normals - the surface-orientation map for that same image. The pack's example workflow feeds it from a DSINE-NormalMapPreprocessor (part of comfyui_controlnet_aux), which is the usual pairing.

Output is a single IMAGE. Cancel the editor and the node falls back to returning your original image unchanged - annoying but harmless, no crash. One warning: unlike the Ultra node, this one has no timeout, so if the frontend never answers, the queue just sits there waiting on you. Cancel in the editor rather than killing the process.

Installing it

Nothing unusual here, and nothing heavy to download:

ComfyUI Manager → Install Custom Nodes → search "Comfyui-LG_Relight"

or:

cd ComfyUI/custom_nodes
git clone https://github.com/LAOGOU-666/Comfyui-LG_Relight

Then restart ComfyUI and hard-refresh the browser. The pack has no requirements.txt and downloads no models - the only outside dependency is the three.js library the editor loads from a CDN, so your browser needs internet access. On an air-gapped machine the editor just won't open.

Common issues

  • The editor never appears. Check for a CDN-blocked three.js in the browser console, and make sure you reloaded the page after install so the pack's web/ assets registered.
  • Nothing visibly changes after Apply. Your normals are probably wrong - mismatched crop, or a depth map wired in by mistake. Re-run your normal preprocessor and check the map preview.
  • The queue hangs. That's the node waiting for you. Hit Cancel in the editor (it returns the original image) rather than killing the process.

One honest caveat: the author's own README says a single node's lighting is limited and it works better paired with IC-Light - their example workflow runs it alongside easy icLightApply and easy imageDetailTransfer, using this node for the directional pass and IC-Light for the coherent final relight. That combination is where this thing really earns its keep.

Category🎈LAOGOU/Relight

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
normalsIMAGE

Outputs (1)

NameTypeDescription
IMAGEIMAGE