Lighting Styler (Advanced)
Lighting presets for SDXL's dual encoders
- text_positive_g
- text_positive_l
- text_positive
- text_negative_g
- text_negative_l
- text_negative
Same lighting presets as the plain LightingStyler - Ambient, Artificial, Backlit, Diffused, Flash, Harsh, Natural, SideLit, Soft, Spotlight - but this one is built for SDXL specifically. If your workflow uses a CLIPTextEncodeSDXL node with separate text_g and text_l boxes, this is the version that fits it cleanly.
Here's why the split exists. SDXL runs two text encoders at once: OpenCLIP-ViT/bigG and CLIP-ViT/L. They're not redundant - the second encoder is a big part of where SDXL's extra control over composition and lighting comes from. So the Advanced node lets you address each one separately instead of shoving the same string into both.
What you set
text_positive_gandtext_positive_l- your prompt for the G encoder and the L encoder. Most of the time you put the same scene in both; the option to differ is there when you want it.text_negative- your negative prompt.lighting- the preset.No optiondisables styling.negative_prompt_to-Both,G only, orL only. This decides where the style's built-in negative gets sent.Bothis the sane default; the per-encoder options are for when a negative is fighting one encoder more than the other.log_prompt- prints the assembled result to the console so you can actually see what landed in G versus L.
The outputs give you every piece: text_positive_g, text_positive_l, and a merged text_positive, plus text_negative_g, text_negative_l, and a merged text_negative. Run _g and _l into CLIPTextEncodeSDXL's matching inputs. If you're not actually on an SDXL dual-encode setup, don't overthink it - grab the merged text_positive / text_negative and feed a normal CLIP Text Encode, which is exactly what the basic LightingStyler was built to hand you.
Installing it
ComfyUI Manager, search ComfyUI_MileHighStyler. Manager is patchy about listing this pack, so if it's not there, clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler
Restart ComfyUI. No models, no dependencies - it's pure JSON templates, so install is instant and it uses no VRAM.
Common snags
The most common confusion is the six outputs. You don't wire all of them - you pick a lane. SDXL dual-encode? Use _g and _l. Everything else? Use the merged pair. Wiring _g into a plain CLIP Text Encode won't break anything, it just wastes the split.
And the pack-wide caveat holds here too: this is CLIP-encoder technology. It's at home on SDXL and its finetunes (Illustrious, Pony, Juggernaut, NoobAI), where the two-encoder split and the weighted style templates are exactly right. On an LLM-encoded model like Flux 2 or Z-Image there aren't two CLIP encoders to split, the weighting is discarded, and the negative does nothing at CFG 1 - so this node is solving a problem those models don't have. Keep it on the SDXL side of your rig.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive_g | STRING | — | |
| text_positive_l | STRING | — | |
| text_negative | STRING | — | |
| lighting | COMBO | 11 options: No option, Ambient, Artificial, Backlit, Diffused, Flash, +5 | |
| negative_prompt_to | COMBO | Both | 3 options: Both, G only, L only |
| log_prompt | BOOLEAN | true | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| text_positive_g | STRING | — |
| text_positive_l | STRING | — |
| text_positive | STRING | — |
| text_negative_g | STRING | — |
| text_negative_l | STRING | — |
| text_negative | STRING | — |