EGTripleTextEncoderLoader
Three encoders for SD3, and the import that can break the whole pack
- CLIP
SD3 and SD3.5 want three text encoders at once - CLIP-L, CLIP-G and T5-XXL - merged into a single conditioning stream. EGTripleTextEncoderLoader is the pack's version of that loader: three filename dropdowns, one CLIP output.
It's the least glamorous node in the set, but it has the most interesting failure mode in the pack, and the failure mode isn't in this node at all.
What it does
Three required widgets: clip_name1, clip_name2, clip_name3, all drawn from ComfyUI/models/text_encoders. One output: CLIP.
Notice what's missing. There's no type dropdown here, unlike the single and dual loaders. That's because the widget is the type: triple encoders exist for exactly one architecture family, and the roles are positional. Slot order is CLIP-L, CLIP-G, T5-XXL, and swapping two of them doesn't error - you just get conditioning the model doesn't understand, plus images that look vaguely like the prompt was written by someone else.
Implementation-wise this is the odd one out in the pack. Every other loader subclasses the corresponding ComfyUI core class; this one is written from scratch and delegates the actual work:
def load_clip(self, clip_name1, clip_name2, clip_name3):
return TripleCLIPLoader.execute(clip_name1, clip_name2, clip_name3).result
with IS_CHANGED overridden to return identity fingerprints for all three files, so replacing any encoder in place re-executes. For the gallery, that's consistent with the rule that swapping any selected text encoder invalidates a preview set's cache.
Where the gallery uses it
The SD3 / SD3.5 profile, and only that. The pack loads an SD3 checkpoint that carries the VAE, then bolts these three encoders onto it - which is the architecture's standard arrangement: the VAE is baked in, the encoders aren't.
When it does, it also switches the graph's latent node to EmptySD3LatentImage and inserts ModelSamplingSD3 to apply the profile's shift value. So the triplet isn't a cosmetic swap; it comes with a different latent format and a different sampling setup. Building an SD3 graph by hand and reusing an EmptyLatentImage is a classic way to get garbage.
The failure mode worth knowing
Near the top of the pack's nodes.py, alongside its other imports, is this:
from comfy_extras.nodes_sd3 import TripleCLIPLoader
That import runs when the pack loads, at ComfyUI startup, for every user - whether or not they ever touch SD3. On a ComfyUI old enough that comfy_extras/nodes_sd3.py doesn't exist, the import raises, and the pack fails to register anything. Not "SD3 doesn't work": none of the gallery's nodes exist, the panel doesn't load, and Manager shows the pack as installed while ComfyUI's console shows an ImportError.
If that's what you're seeing, the fix is to update ComfyUI, not to reinstall the pack. The README says as much in the ordinary way - "additional architectures require their native nodes in your ComfyUI version" - but it's easy to read that as "SD3 might not work" rather than "the whole extension won't start."
Inputs and outputs
Three filenames and one CLIP. Drop the CLIP into CLIPTextEncode, exactly like any other encoder load. No device widget on this one, so if you're tight on VRAM you don't get the CPU-offload escape hatch the single and dual loaders offer.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/nikminer/ComfyUI-Emotional-Gallery.git comfyui_emotional_gallery
Restart, Ctrl+F5. No pip packages and no bundled models, but you do need the three encoder files in models/text_encoders - SD3.5's medium release in particular splits them from the weights, and T5-XXL alone is a multi-gigabyte download.
Like the rest of the pack's internal nodes it's hidden from the Add Node menu; it stays registered so workflows containing it keep working.
Common issues
The whole pack disappears from ComfyUI. See above: an ImportError on comfy_extras.nodes_sd3. Update ComfyUI and restart.
Images ignore the prompt, or produce mush. Check the slot order. CLIP-L, CLIP-G, T5-XXL. It's positional and silently wrong when you get it backwards.
Missing-encoder error. SD3 checkpoints don't always bundle the encoders even when they bundle the VAE. Read the model card for which files it expects.
SD3 output looks flat compared to ComfyUI's own SD3 example. The gallery's SD3 profile starts at 1024×1024, 28 steps, CFG 4.5, euler/sgm_uniform with shift 3 - those are the author's starting values, not laws. Nudge shift first; it's the SD3 equivalent of guidance.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_name1 | COMBO | 0 options: | |
| clip_name2 | COMBO | 0 options: | |
| clip_name3 | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CLIP | CLIP | — |