Lora Loader (Texturaizer)
Stack every LoRA the scene named, enabled or not, in one pass
- model
- clip
- loras
- MODEL
- CLIP
Any ComfyUI regular knows the Power Lora Loader from rgthree-comfy - the single node that stacks multiple LoRAs with per-entry toggles instead of daisy-chaining ten LoraLoader nodes. Lora Loader (Texturaizer) is that idea, but driven by data instead of a GUI: you hand it a DICTIONARY of LoRA configs (typically pulled straight from the Blender export) and it loops through, applies every enabled, non-zero-strength LoRA, and returns the modified model and CLIP.
Context: Texturaizer is a paid Blender addon by Luke Kratsios (LatentSpaceDirective); these nodes are the free open-source ComfyUI side. The "Power" in the class name is a nod to the concept, not the rgthree node - this is its own implementation with its own inputs.
Inputs and outputs
model(MODEL) andclip(CLIP) - required; the things LoRAs get applied to.loras(DICTIONARY, optional) - the config. Each key is a LoRA's identifier; each value is a dict withenabled(bool),lora(the filename),strength(model strength), and optionallystrengthTwo(CLIP strength, defaulting to the model strength).
Outputs: MODEL and CLIP, chained through all the applied LoRAs.
How it works
Under the hood it's the standard ComfyUI LoraLoader (load_lora) called repeatedly. The interesting part is the filename resolution: the pack ships a get_lora_by_filename() helper that tries, in order, exact path, path-without-extension, bare filename, filename-without-extension, then a fuzzy substring match against everything in your loras folder. That last fallback is forgiving - a LoRA stored as subdir/artist_style_v2.safetensors will still be found if the JSON just says artist_style_v2. It skips (with a console warning) any config that's disabled, missing a file, or zero-strength, so a scene that references LoRAs you haven't downloaded won't crash the run - the missing ones just get skipped.
That's the behavior that makes batch rendering survivable: Blender exports one LoRA list for the whole scene, and this node applies it per object without you touching the graph. Disable a LoRA in Blender, re-export, and the next run quietly drops it.
Install
Pack-level:
cd ComfyUI/custom_nodes
git clone https://github.com/LatentSpaceDirective/ComfyUI-Texturaizer
or ComfyUI Manager → search "Texturaizer" → Install → restart. No extra deps beyond stock ComfyUI packages, no model downloads - LoRA files themselves come from your existing loras folder (CivitAI etc.), which is exactly what the fuzzy matcher scans.
Where people get burned
Two gotchas worth naming. First, the loras dict shape matters: each value must be a dictionary with enabled/lora/strength keys. If you pipe in a dict of plain strings, every entry hits the "not a dictionary" warning and nothing gets applied - silent no-op, check your console. Second, the fuzzy matching cuts both ways: if you have two similarly-named LoRAs, the first substring hit wins, so name your files distinctly. And one honest limit vs. the rgthree node: this is data-driven, so there's no in-graph GUI to tweak a weight on the fly - you change the JSON (or the Blender scene) and re-run. For a Texturaizer graph that's the right trade; for standalone work the GUI version is friendlier.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lorasopt | DICTIONARY | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |