LayerColor: YUV
YUV
- image
- image
LayerColor: YUV is the same "add a number to a channel" idea as the RGB node, except it works in the YUV color space instead of RGB - and that difference is the whole reason to use it. YUV splits an image into Y (luma, i.e. brightness) and two chroma channels, U and V (the color/opponent axes). Because brightness lives in its own channel, you can shove color around without touching how light or dark the image reads, and you can lift or drop overall brightness without shifting the hue. That separation is exactly what makes YUV nicer than RGB for certain grades.
Mechanically it converts the image to YUV, adds your offsets to each channel, then converts back to RGB. Each of the three inputs runs -255 to 255 with a default of 0:
- Y - luma. Push it up to brighten the whole frame, down to darken, with the colors staying put.
- U and V - the two chroma axes. Nudging these tints the image (roughly toward blue/yellow and red/green respectively) while the brightness holds steady.
The one output is image, the converted result, ready for the next node in your chain.
So when do you actually reach for this over plain RGB or a brightness node? When you want to decouple tone from color. Say a render is the right color but a bit dark - bump Y and you brighten without desaturating or warming it. Or you want to shift the color mood but keep the exact same exposure - work U and V and leave Y alone. In RGB you can't do that cleanly; every channel change moves brightness and color together. YUV is the node that lets you touch one without disturbing the other.
It's a niche tool, honestly. Most people never think in YUV, and for everyday warmth or cast fixes the RGB, ColorTemperature, or ColorBalance nodes are more intuitive. But if you've ever wanted a "brightness that doesn't wash the color out" or a "tint that doesn't change exposure," this is the clean way to get it. It's also handy stacked with the other LayerColor nodes as one link in a grade - do your luma work here, your channel casts in RGB, your film curve elsewhere.
Install is the pack standard. Simplest is ComfyUI Manager - search ComfyUI Layer Style (or "LayerStyle"), install, restart. Or manual: cd ComfyUI/custom_nodes && git clone https://github.com/chflame163/ComfyUI_LayerStyle, then pip install -r requirements.txt from inside the folder with ComfyUI's Python, and restart. On a hosted ComfyUI it's typically preinstalled.
The pack-wide gotcha to know: Layer Style is infamous for showing up as failed to import - you install it, restart, and the whole node set is red or missing. It's rarely any single node; it's a dependency clash. The pack drags in a heavy stack (transformers, onnxruntime, opencv), and one wrong version - a stray transformers or tensorflow in the env is the usual offender - knocks the entire pack out on import. Fix it by reading the ComfyUI startup log for the traceback (it names the actual culprit package), reinstalling requirements against ComfyUI's own Python, and hitting Manager's Try Fix. If YUV is missing, every LayerStyle node is missing, and that shared import failure is what you're really chasing.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| Y | INT | 0-255–255 | — |
| U | INT | 0-255–255 | — |
| V | INT | 0-255–255 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |