Substance Cooker
Compile Designer Graphs Without Opening Designer
- sbsar_file_path
- cooking_log
- output_directory
If you make materials in Substance Designer, you know the ritual: you edit a .sbs graph, then you cook it into a .sbsar archive before anything else - a game engine, a renderer, a texture pipeline - will touch it. SubstanceCooker is the node that does that compile step inside ComfyUI, so you can cook a Designer graph on demand and hand the result straight to the rest of your workflow, no round-trip through Designer's own export dialog.
What it actually does
Mechanically this node is refreshingly simple: it builds a command line and runs it. Specifically it shells out to sbscooker from Adobe's free Substance 3D Automation Toolkit - the CLI version of Designer's cooking pipeline - with something like sbscooker cook --inputs my_material.sbs --output-path ./output. No API, no license key, no bundled Substance engine. If you've already got the toolkit installed, this node is a thin, predictable wrapper around a tool that exists anyway.
That "no magic" framing matters for what to expect: this node cooks a graph you already wrote. It won't generate materials for you, and it needs a .sbs file authored in Substance Designer (a paid Adobe app) as its input. If you don't own Designer, the Cooker is the wrong node for you - but you can still use the rest of this pack on free .sbsar archives from Adobe's Substance 3D asset library.
The inputs that matter
sbs_file_path- path to your.sbsgraph. Required, and the node will refuse anything that isn't a.sbsfile.output_directory- where the.sbsarlands. Required.optimization_level(0–3) - the one you'll actually fiddle with. 0 is fastest but bloats the archive; 1 is the recommended balance; 3 is maximum compression and noticeably slower cooking. Map it to your urgency: level 1 unless you have a reason not to.merge_graphs- squash all graphs in the file into one.sbsar. Off by default, which is usually what you want.output_name- override the output filename. Leave it blank to get<graphname>.sbsar.enable_icons,verbose- icon data goes in by default;verboseis your debugging friend when a cook fails.
The outputs
sbsar_file_path- the money output. Wire it into this pack's Substance Renderer or Substance Info Extractor, or into anything else that wants a path string.cooking_log- the raw CLI output. When something goes wrong, this is where the actual error message lives.output_directory- the resolved output folder, in case ComfyUI's working directory isn't what you assumed.
Installing it
Install via ComfyUI Manager (search "Substance Designer Integration") or manually:
cd /path/to/ComfyUI/custom_nodes/
git clone https://github.com/jasonjgardner/comfui-substance-designer-integration
Then restart ComfyUI. Here's the part that trips people up: the Python dependencies (torch, numpy, Pillow) are already present in any ComfyUI install, so pip install -r requirements.txt is effectively a no-op. The real dependency is external - download the Substance 3D Automation Toolkit from Adobe (free, but you need an Adobe account) and make sure sbscooker is findable, either on your PATH or in one of the install locations the plugin auto-checks. If auto-detection misses, you can point the plugin at the right binary via a config.json under substance_designer/ in your ComfyUI config directory.
Common issues
"Tool not found" is the classic. It means the toolkit isn't installed, isn't on the PATH, or isn't in a location the plugin checks - so install it, or override the path in config.json. Slow cooking with a big optimization level is expected behavior, not a bug; drop to level 0 for throwaway cooks. And remember the input must actually be a .sbs - pointing this at a .sbsar (that's what the Renderer eats) is the most common beginner mix-up.
One honest caveat about this pack in general: it's young, MIT-licensed, and the code itself credits an AI agent rather than a person, so don't expect a big community or rich docs behind it. But the mechanism here is so thin - one subprocess call with well-defined flags - that it does what it says as long as the toolkit is present. It's the kind of node you install for a specific pipeline, use without ceremony, and don't think about again.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| sbs_file_path | STRING | — | |
| output_directory | STRING | ./output | — |
| output_nameopt | STRING | — | |
| optimization_levelopt | INT | 10–3 | — |
| enable_iconsopt | BOOLEAN | true | — |
| merge_graphsopt | BOOLEAN | false | — |
| verboseopt | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| sbsar_file_path | STRING | — |
| cooking_log | STRING | — |
| output_directory | STRING | — |