SP_SD3Loader
SP_SD3Loader — the SD3/SD3.5 loader that handles the negative-prompt quirk for you
- sp_pipe
- model
- clip
- vae
- positive
- negative
- latent
SD3 and SD3.5 have a reputation problem and most of it is fair: they ignore negative prompts out of the box. The known workaround is fiddly - you zero out the negative conditioning, split it across timestep ranges, and recombine it - and doing that by hand means three extra nodes just to have a negative field that behaves. SP_SD3Loader from the SP-Nodes pack is basically the "someone already fought this fight" node: it's a subclass of the pack's SP_FluxLoader with the SD3 plumbing built in, so one box loads the unet, three text encoders, the VAE, and your prompt, and applies the negative-prompt workaround automatically.
The mechanism is worth knowing because it's the whole point. In the pack's shared loader core, when the clip type is sd3, the negative text you type gets encoded, then run through ConditioningZeroOut, split with ConditioningSetTimestepRange (your negative for the early timesteps, the zeroed-out version for the rest), and recombined. That zero-out + timestep-range dance is the community-standard fix for SD3's timestep-pooled guidance ignoring the negative - and here it just happens. It's also the only loader in the pack (besides the SD one) that exposes a real negative text box.
Inputs that matter:
- unet_name + weight_dtype - same quant ladder as the rest of the pack: fp8 variants,
nf4-float8_*,gguf, plus adefaultoption SD3 specifically. SD3/SD3.5's three text encoders are part of why GGUF exists for them. - clip_name1 / clip_name2 / clip_name3 - the SD3 family wants all three (t5xxl + clip_l + clip_g) for the full TripleCLIPLoader path;
clip_name2andclip_name3default toNone, which is your "run it degraded because VRAM" lever. - lora_name + lora_strength, positive / negative, and the resolution presets (31 including custom, which routes to
empty_latent_width/height).
Outputs are the usual seven - sp_pipe, model, clip, vae, positive, negative, latent - ready to feed the pack's SP_KSampler (the pipe's _model_type is stamped sd3, so the sampler won't apply Flux-style guidance distillation to it) or any stock sampler.
Install is the shared pack story:
cd ComfyUI/custom_nodes
git clone https://github.com/bananasss00/ComfyUI-SP-Nodes
or ComfyUI Manager → SP-Nodes, then restart. Like the Flux loader it leans on ComfyUI-GGUF (all its clip loaders are the GGUF ones) and, for the nf4 dtypes, ComfyUI_bitsandbytes_NF4-Lora - the pack's own dependency table lists both. If you pick a gguf unet without ComfyUI-GGUF installed, the node errors at expansion.
The honest caveat: SD3-family models are a tougher crowd than Flux - community enthusiasm cooled fast after launch, and by 2026 a lot of people reaching for a triple-CLIP architecture are using Flux or a newer flow-matching model instead. But if your LoRA or your workflow is SD3.5, this is the loader that gets you a working negative field without assembling the workaround by hand.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 0 options: | |
| weight_dtype | COMBO | 7 options: fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2, nf4-float8_e4m3fn, nf4-float8_e5m2, gguf, +1 | |
| vae_name | COMBO | 1 options: pixel_space | |
| clip_name1 | COMBO | 0 options: | |
| clip_name2 | COMBO | 1 options: None | |
| clip_name3 | COMBO | 1 options: None | |
| lora_name | COMBO | 1 options: None | |
| lora_strength | FLOAT | 1.00-100–100 | — |
| positive | STRING | — | |
| negative | STRING | — | |
| resolution | COMBO | 1024 x 1024 | 31 options: width x height (custom), 512 x 512, 512 x 768, 576 x 1024, 768 x 512, 768 x 768, +25 |
| empty_latent_width | INT | 51264–16384 | — |
| empty_latent_height | INT | 51264–16384 | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| sp_pipe | SP_PIPE | — |
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |