Nodes/ComfyUI-TextureAlchemy/Appearance Extractor (Marigold)
ComfyUI Node

Appearance Extractor (Marigold)

The node that turns Marigold's appearance output into real PBR maps

By amtarr·Created 9 months ago·Updated 4 months ago· 58
Appearance Extractor (Marigold)
  • marigold_appearance
  • albedo
  • roughness
  • metallic
  • uncertainty
albedo_gamma1.00
roughness_gamma1.00
metallic_gamma1.00
uncertainty_gamma1.00

If you've tried to extract PBR maps from an image with ComfyUI, you know the pain: the hard part isn't running the model, it's that Marigold hands you a single batched output and you have to slice it apart yourself. That's exactly what this node exists for. Appearance Extractor takes Marigold's appearance output - a batch of images from kijai's ComfyUI-Marigold - and splits it into albedo, roughness, and metallic maps, plus an uncertainty map for good measure.

Marigold is the community's current pick for this job: it's a generative depth-estimation model, and Marigold v1.1 has been the go-to for pulling albedo and material channels out of a single photo. People have literally built custom nodes to do what this node does, because the appearance model's output format isn't obvious. TextureAlchemy wraps it up so you don't have to.

How it works

Marigold's appearance model outputs three images as one batch, and this node knows the format:

  • Image 0 is the albedo in sRGB space.
  • Image 1 is the material channels in linear space - red channel holds roughness, green holds metallic.
  • Image 2 is the uncertainty map, which only exists if you ran with an ensemble size greater than 2.

The node slices the batch, pulls the channels apart, and applies a per-map gamma pass. The gamma knobs (albedo_gamma, roughness_gamma, metallic_gamma, uncertainty_gamma) all default to 1.0, and the tooltips tell you which color space each expects - albedo in sRGB, the material channels in linear. Gamma > 1 darkens, < 1 brightens, so if your roughness comes out too washed out, nudge its gamma down and watch it snap into contrast.

The inputs

The only required input is marigold_appearance, and it has to be the appearance model's output from ComfyUI-Marigold (kijai's wrapper), not the depth output. Wire it wrong - or feed it a single image - and you'll get a degrade-to-albedo fallback rather than an error, which is the tell that you've got the wrong model output.

Outputs: albedo, roughness, metallic, and uncertainty, all plain IMAGEs. From there they feed straight into a PBR Combiner, a channel packer, or a saver.

Two things worth knowing

First, you need the Marigold side installed separately. This pack doesn't download models - the heavy lifting happens in kijai/ComfyUI-Marigold, which you install and then run to produce the marigold_appearance image. Second, the batch-slicing matters: if your appearance batch lacks the uncertainty image, the node returns a zeroed uncertainty map. That's not a bug - it's the "no uncertainty" path, and it's harmless.

Installation

Appearance Extractor ships in amtarr/ComfyUI-TextureAlchemy, under Add Node → Texture Alchemist → Extractors. Install the pack via ComfyUI Manager (search "TextureAlchemy") or:

cd ComfyUI/custom_nodes
git clone https://github.com/amtarr/ComfyUI-TextureAlchemy

Then install kijai's ComfyUI-Marigold and its models separately. Restart ComfyUI after both and you're good.

CategoryTexture Alchemist/Extractors

Inputs (5)

NameTypeDefaultDescription
marigold_appearanceIMAGE
albedo_gammaFLOAT1.000.1–3Gamma correction for albedo (sRGB space)
roughness_gammaFLOAT1.000.1–3Gamma correction for roughness (linear space)
metallic_gammaFLOAT1.000.1–3Gamma correction for metallic (linear space)
uncertainty_gammaFLOAT1.000.1–3Gamma correction for uncertainty maps

Outputs (4)

NameTypeDescription
albedoIMAGE
roughnessIMAGE
metallicIMAGE
uncertaintyIMAGE