PBR Splitter
Unpack a PBR_PIPE Back Into Individual Maps
- pbr_pipe
- albedo
- normal
- ao
- height
- roughness
- metallic
- transparency
- emission
PBR Splitter is the other end of the pack's pipe system: where PBR Combiner bundles maps into one PBR_PIPE wire, Splitter unpacks a pipe back into individual map outputs. It's the least glamorous node in the pipeline and also the one that quietly saves you hours of rewiring.
You'll reach for it whenever something downstream refuses to speak PBR_PIPE - which is most of ComfyUI, since the pipe type is TextureAlchemy-specific. A normal map needs to go into a format converter, an AO needs to feed a mask generator, an albedo needs to hit a resize node: all of those want plain IMAGE wires, and Splitter hands them out.
How it works
One input - pbr_pipe - and eight outputs, one per map: albedo, normal, ao, height, roughness, metallic, transparency, emission. It reads the pipe's internal dict and returns whatever maps it contains. Maps that aren't present in the pipe come back as None, so you don't get errors for a material that legitimately has no emission or transparency - you just don't wire those outputs.
When you actually use it
Two patterns dominate. First, interop: you've built a pipe, but you need to run individual maps through non-pipe nodes (the relighters, the channel packers, a normal formatter) and then feed them back into a Combiner. Second, targeted fixes: instead of adjusting the whole material, split it, fix one map, and rebuild the pipe. The flow is round-trip: Combiner → work on the pipe → Splitter → touch individual maps → Combiner → continue.
Because the outputs are plain IMAGE, you can also use a Splitter as a poor man's Pipe Preview - wire the outputs into a preview grid. PBR Pipe Preview does that in one step, but if the splitter is already in your graph, it costs you nothing extra.
Installing it
Part of TextureAlchemy:
cd ComfyUI/custom_nodes
git clone https://github.com/amtarr/ComfyUI-TextureAlchemy
or via ComfyUI Manager (search "TextureAlchemy"), then restart. Under Texture Alchemist → Pipeline. No dependencies, no model downloads.
A practical note
A pipe only holds what you put in it. If your Combiner never got an emission input, the Splitter's emission output is None - which is fine until a downstream node that doesn't accept None is wired to it. The moment you see a "NoneType has no attribute" style error after a Splitter, the fix is usually that you're wiring an empty output; check which maps your pipe actually contains (PBR Pipe Preview makes that visible) before you blame the Splitter.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| pbr_pipe | PBR_PIPE | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| albedo | IMAGE | — |
| normal | IMAGE | — |
| ao | IMAGE | — |
| height | IMAGE | — |
| roughness | IMAGE | — |
| metallic | IMAGE | — |
| transparency | IMAGE | — |
| emission | IMAGE | — |