Nodes/ComfyUI Layer Style/LayerColor: Color of Shadow & Highlight
ComfyUI Node Runs on cloud

LayerColor: Color of Shadow & Highlight

Color of Shadow & Highlight

By chflame163·Created 3 years ago·Updated 5 days ago· 3,113
LayerColor: Color of Shadow & Highlight
  • image
  • mask
  • image
â—„shadow_brightness1.00â–º
â—„shadow_saturation1.00â–º
â—„shadow_hue0â–º
â—„shadow_level_offset0â–º
â—„shadow_range0.25â–º
â—„highlight_brightness1.00â–º
â—„highlight_saturation1.00â–º
â—„highlight_hue0â–º
â—„highlight_level_offset0â–º
â—„highlight_range0.25â–º

This is the color-grading node for people who think in shadows and highlights. It lets you push the brightness, saturation, and hue of the dark parts of an image and the bright parts independently - which is the core move behind that cinematic look everyone's after: cool shadows, warm highlights, or teal-and-orange if you want to be obvious about it. Photographers call it split-toning. If your render is technically fine but flat and characterless, this is where you give it a mood.

The mechanism is tonal masking plus adjustment, all in one node. It internally figures out which pixels are shadows and which are highlights (based on luminance), then applies your brightness/saturation/hue changes only to the relevant band. So you're not shifting the whole image's color - you're tinting the darks one way and the brights another, with the midtones largely left alone. That separation is what makes it a grading tool rather than a blunt color filter.

The controls come in two matching sets, one for shadows and one for highlights. For each: _brightness (0–3, default 1) lifts or crushes that tonal band, _saturation (0–3) intensifies or drains its color, and _hue (−255 to 255) rotates its color - this is the one you'll use most, dialing warmth into highlights or coolness into shadows. Then _level_offset (−99 to 99) shifts the band's threshold brighter or darker, and _range (0.01–0.99, default 0.25) sets how much of the tonal scale counts as "shadow" or "highlight" - a wider range reaches further toward the midtones. There's an optional mask input to confine the whole grade to a region, so you can, for instance, warm the highlights on the subject only. Everything at its default of 1 (or 0 for hue/offset) is a no-op, so you tweak from neutral.

One output: image, the graded result.

Install is the pack standard: search "ComfyUI Layer Style" in ComfyUI Manager, or cd ComfyUI/custom_nodes && git clone https://github.com/chflame163/ComfyUI_LayerStyle, then pip install -r requirements.txt and restart. No models.

The way to use this without wrecking the image is small moves. Grading lives in subtlety - a slight hue rotation and a touch of saturation on each band reads as "cinematic," while cranking the sliders reads as "someone found the color node." Start by nudging shadow_hue cooler and highlight_hue warmer at default ranges, and only touch _range/_level_offset if the split is catching the wrong tones (spilling color into the midtones usually means your range is too wide). Pair it with the pack's Shadow & Highlight Mask node if you want to see exactly which pixels each band is grabbing. And the standing LayerStyle warning: if the node doesn't show up after install, the pack failed to import on a Python dependency conflict - check the console for the traceback, run "Try Fix" in Manager, and reinstall the requirements into your venv.

Category😺dzNodes/LayerColor

Inputs (12)

NameTypeDefaultDescription
imageIMAGE—
shadow_brightnessFLOAT1.000–3—
shadow_saturationFLOAT1.000–3—
shadow_hueINT0-255–255—
shadow_level_offsetINT0-99–99—
shadow_rangeFLOAT0.250.01–0.99—
highlight_brightnessFLOAT1.000–3—
highlight_saturationFLOAT1.000–3—
highlight_hueINT0-255–255—
highlight_level_offsetINT0-99–99—
highlight_rangeFLOAT0.250.01–0.99—
maskoptMASK—

Outputs (1)

NameTypeDescription
imageIMAGE—