Badge 8.7 Intrinsic Color Guide (DAELab)
Give the model a silver-colored hint instead of praying it understands 'satin silver'
- image
- mask
- IMAGE
What this is for
Metal has a color. "Make this region satin gold" is a perfectly clear instruction to you, and a coin flip to an image model, which is why half the time you ask for gold you get a warm beige and the other half you get something that looks like a dirty penny. This node takes the guesswork out of the color half of the problem: you say #C8A86B, it paints that hue into the region you selected, keeps the shading that's already there, and hands the result to the model as a reference. Now the model only has to do surface, not color.
Badge 8.7 Intrinsic Color Guide is a small, dumb, reliable pre-tint - exactly the kind of thing you want before a paid API call, because it costs nothing and removes an entire axis of "huh, guess it went bronze this time".
How it works
Three inputs, no options. For each image in the batch it takes the mask, works out the median luminance inside the mask on the input image, then scales your target hex color per pixel by that pixel's luminance divided by the median. The scale is clamped between 0.8 and 1.15, so you keep the local shading and highlights but you can't get a wild value swing out of a specular pixel.
Where the mask is set, the output is the tinted guide. Everywhere else, the input image passes through untouched. That's it - no threshold, no strength dial, no blur.
The clamp does something quietly important: because the multiplier is relative to the mask's median, a mostly-black region stays black and a mostly-white region stays white. It preserves the value structure you already have and only swaps the hue. If you feed it an unlit, flat-gray region, you get back a flat gold region - which is fine if the model downstream is going to add the relief, and not fine if you expected this node to invent lighting.
The inputs that matter
image- the flat artwork (or any image carrying the region you want to tint). Batch is respected.mask- the region. Binary is what you want; it's thresholded at 0.5 internally.color- a hex string, default#C0C0C0. This is a plain string widget, not a color picker, so type it with the#:#C8A86Bfor the pack's satin gold,#C0C0C0for silver.
Output is one IMAGE. It's a guide, not a result - the intended wiring is: guide into the image input of your GPT/local edit node, your real mask into the mask input. The pack uses it in the 8.7 material path to give gold and silver their intrinsic color while other materials get preserve treatment (keep the source artwork's own color).
Install
ComfyUI Manager → search the pack title, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TeutonicMepheles/ComfyUI-DAELab-Custom-Nodes-Library.git
# restart ComfyUI
Nothing to download. This node is pure PyTorch and loads with ComfyUI core libraries.
Where people get burned
The one thing that surprises people: the clamping. A pure black region (median luminance under 0.05) gets its denominator floored, so the shading multiplier lands at the bottom of the range and your "gold" stays very dark. If the guide looks like mud, the input region was underexposed, not the node broken - pick a region with actual value range or brighten the flat art first.
Second: it only tints inside the mask, so if your mask is smaller than the region you'll get a visibly tinted core and an untinted ring. That reads as a model failure when it's a mask failure. The pack's own notes are blunt that optical tricks like this are an approximation of surface appearance, not a physical albedo split - always eyeball the final render rather than trusting the numbers.
And don't reach for it outside the badge context hoping for a generic "recolor" node. It's an unlit pre-tint with a ±15% shading budget. For actual recoloring there are better, cheaper, more controllable nodes; this one exists because a guidance image is the most reliable way to make a paid instruction-edit land on the right metal.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| mask | MASK | — | |
| color | STRING | #C0C0C0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |