Nodes/ComfyUI-SuperPBR/πŸ†’ Load SuperPBR Model
ComfyUI Node

πŸ†’ Load SuperPBR Model

The drop-down that's empty until you read the README

By HullabaloΒ·Created 6 days agoΒ·Updated 2 days agoΒ· 0
πŸ†’ Load SuperPBR Model
    • model
    β—„modelβ–Ύβ–Ί

    The most common way this node fails is visual: you add it, and the model drop-down is empty. Nothing to select, nothing in the log that reads like an error. That's not a bug - it's a node with exactly one required field that can only be as full as your hard drive.

    πŸ†’ Load SuperPBR Model does one job. It finds a SuperMat checkpoint and hands the rest of the pack a SUPERMAT object. Wire it into SuperPBR Material's model input and you're done with it. That's the whole node, and it earns its own article mostly because the failure modes are all "where did I put the file".

    Where it looks, and why that's both helpful and a trap

    The pack registers a virtual folder called supermat_models and points it straight at your models/diffusion_models directory, accepting .pth and .safetensors. So model lists everything sitting in your diffusion models folder. There is no separate models/supermat to create, and no renaming ritual.

    The upside: the README's instruction - "put supermat.pth anywhere under your models/diffusion_models folder" - is literal. Subfolders are fine. The downside: that folder is also where your Flux, SDXL and video UNets live, so the drop-down is a superset of what actually works. Picking something that isn't SuperMat doesn't quietly produce weird maps; the loader validates the state dict and throws ... is not a Base SuperMat checkpoint: missing [...], unexpected [...], listing the keys it couldn't match. Read that message as "wrong file", not "corrupt download".

    What it does when you hit run

    Selecting a file and queueing a prompt constructs the model: it loads the checkpoint, remaps the diffusers-style key names onto ComfyUI's module layout, and builds a UNet whose final up blocks are duplicated into two output heads - one for albedo, one for ORM. It picks its dtype the way ComfyUI picks any UNet's, then wraps the result in a ModelPatcher.

    That last part matters on small cards. Because it's a patcher, the SuperMat model participates in ComfyUI's normal VRAM management and can be offloaded between runs instead of sitting resident forever. You don't get to choose fp16 vs fp32 here - there's no field for it, and that's deliberate.

    The output is a SUPERMAT type. It'll only connect to the pack's own SuperPBR Material node, which is fine and by design; don't go looking for a converter.

    Install

    ComfyUI Manager β†’ search the pack title, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Hullabalo/ComfyUI-SuperPBR.git
    

    Grab supermat.pth and put it under ComfyUI/models/diffusion_models/ - any subfolder works. Then restart, because the file list is built when ComfyUI starts.

    There are no Python dependencies: the pack declares none at all, so it slots into an existing install without touching your torch or transformers versions. In a scene where every new node pack is a dependency-conflict lottery, four untouched steps is a pleasant surprise.

    Quick checks

    Empty drop-down means the file isn't under diffusion_models, or you didn't restart after moving it. A FileNotFoundError-shaped traceback means it was there at startup and isn't any more - moved, renamed, or on a drive that slept. A slow first run is the checkpoint loading; the model loads when the graph executes, not when you drag it in, so the first queue after a restart takes noticeably longer than the second.

    CategorySuperPBR

    Inputs (1)

    NameTypeDefaultDescription
    modelCOMBOBase SuperMat checkpoint.

    Outputs (1)

    NameTypeDescription
    modelSUPERMATβ€”