PBR Adjuster
The Fine-Tune Step Your PBR Set Always Needs
- albedo
- ao
- roughness
- metallic
- transparency
- albedo
- ao
- roughness
- metallic
AI-extracted PBR maps are rarely right on the first pass. Roughness comes out too dark, metallic looks like noise, the albedo needs a contrast nudge - every map wants its own little correction. PBR Adjuster is the pack's answer: a single node that takes your albedo, AO, roughness, and metallic maps and gives each one its own brightness, contrast, and invert controls, all at once.
It's the "quick map adjustments before combining" step in amtarr/ComfyUI-TextureAlchemy - the node you put between the Marigold/Lotus extraction and the rest of your pipeline whenever the raw output needs human correction. And because it takes four maps in and gives four maps out in the same order, it drops into a graph without rewiring anything.
How it works
Nothing exotic - per-map brightness multiplication, contrast scaling, and an optional invert. What makes it useful is the batch: all four maps adjusted in one node so you can eyeball them as a set. The per-map controls are:
*_brightness(0–3, default 1) - a straight multiplier. Defaults are 1.0 everywhere except roughness, which ships at 1.5 because Marigold's roughness output tends to run dark. Leave that one alone and see if your roughness reads better immediately.*_contrast(0–3, default 1) - stretches or compresses the value range.*_invert- flips the map. Useful when an extracted map comes out inverted (this happens with AO more than you'd think).
The inputs that matter
- Four required IMAGE inputs:
albedo,ao,roughness,metallic. - One optional:
transparency- if you feed it a transparency map and enableembed_transparency, it gets baked into the albedo's alpha channel, which is a neat one-node way to get an RGBA albedo out for cutout materials. - Outputs:
albedo,ao,roughness,metallic- adjusted, in the same order.
Where it slots in
Right after your extraction step and before the pipeline continues. The pack's example flow is: PBR Extractor → PBR Adjuster (tweak roughness_brightness up, tighten AO contrast) → feed into the pipeline nodes or PBR Saver. It's also handy for matching two material sets: if your brick and your mortar have different extracted contrast, running both through the same Adjuster settings gets them visually consistent.
Installing it
Part of TextureAlchemy:
cd ComfyUI/custom_nodes
git clone https://github.com/amtarr/ComfyUI-TextureAlchemy
restart ComfyUI, and it's in the base Texture Alchemist category. Manager users: search "Texture Alchemy". No extra dependencies.
Gotchas
The roughness 1.5 default is the thing to know about - it's a deliberate correction, and if you dial it back to 1.0 expecting "neutral," you'll wonder why everything suddenly looks glossy. Also remember the invert toggles: an inverted metallic map is a classic "why is everything metal?" moment, and the fix is one boolean. Finally, this node takes four separate IMAGE inputs - if you're coming from a PBR_PIPE-style workflow, you need to split the pipe first (the pack has nodes for that) rather than plugging a pipe in here.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| albedo | IMAGE | — | |
| ao | IMAGE | — | |
| roughness | IMAGE | — | |
| metallic | IMAGE | — | |
| albedo_brightness | FLOAT | 1.000–3 | — |
| albedo_contrast | FLOAT | 1.000–3 | — |
| albedo_invert | BOOLEAN | false | — |
| ao_brightness | FLOAT | 1.000–3 | — |
| ao_contrast | FLOAT | 1.000–3 | — |
| ao_invert | BOOLEAN | false | — |
| roughness_brightness | FLOAT | 1.500–3 | — |
| roughness_contrast | FLOAT | 1.000–3 | — |
| roughness_invert | BOOLEAN | false | — |
| metallic_brightness | FLOAT | 1.000–3 | — |
| metallic_contrast | FLOAT | 1.000–3 | — |
| metallic_invert | BOOLEAN | false | — |
| embed_transparency | BOOLEAN | false | Embed transparency map into albedo's alpha channel |
| transparencyopt | IMAGE | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| albedo | IMAGE | — |
| ao | IMAGE | — |
| roughness | IMAGE | — |
| metallic | IMAGE | — |