SD_4XUpscale_Conditioning_motorway_edition
Images and prompts in, upscale latent out, on the bus
- MOTORWAY 🚌💨
- MOTORWAY 🚌💨
SD_4XUpscale_Conditioning_motorway_edition is the clone of ComfyUI's built-in SD_4XUpscale_Conditioning, and it's the prep step for one of the more interesting upscaling approaches in the Stable Diffusion toolbox: the 4x-Upscaler ("upscale diffusion") from Stability. Instead of the usual pixel upscaler that sharpens and hallucinates detail, upscale diffusion actually re-diffuses - it takes your image, encodes it into a high-resolution latent, and then runs a diffusion pass over it guided by your conditioning. The "conditioning" part of the name is the point: this node turns your image and your prompt into the latent + conditioned inputs that the upscale sampling pass consumes.
So the shape of the workflow is: generate a base image, run it through the SD4X upscale pipeline - this node first, then a sampler that actually denoises the big latent (the SD4X upscaler model does the latent work; this node just sets the table). It's a specific, heavyweight pipeline: it wants the 4x-Upscaler checkpoint and a decent chunk of VRAM, and it's slower than a plain ESRGAN pass. Its payoff is coherence - the upscale stays faithful to the image instead of inventing independent detail, which is why upscale-diffusion workflows keep showing up in quality-obsessed threads.
The widgets:
- scale_ratio (default 4.0, 0–10) - the upscale factor. 4.0 is the intended use (it's called 4x for a reason); lower values give a smaller boost.
- noise_augmentation (default 0, 0–1) - how much noise gets added to the upscaled latent before re-diffusion. This is your "how much do we let the upscale reinterpret the image" dial. 0 is conservative and faithful; creeping it up trades fidelity for detail regeneration. Most people leave it at 0.
Everything else is key plumbing. It reads three things off the Motorway bus: INPUT_images_key (default images), INPUT_positive_key (default positive), and INPUT_negative_key (default negative). It writes three things back: OUTPUT_positive_key, OUTPUT_negative_key, and OUTPUT_latent_key (all defaulting to the conventional names positive, negative, latent). Point it at whatever keys your earlier nodes used, and the upscale sampler picks up latent on the next hop.
Installing it
Part of ComfyUI_agilly1989_motorway. ComfyUI Manager: search ComfyUI_agilly1989_motorway, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
No Python dependencies from the pack - but the pipeline needs the SD4X upscale model (a checkpoint you download separately), because without it there's nothing to do the actual upscale diffusion. The node itself is just glue.
The catch
The pack's standing caveats: release 1.1.7 ships with the clones disabled (uncomment the two ClonedNodeMapping lines in custom_nodes/ComfyUI_agilly1989_motorway/__init__.py, restart). And the README is a solo dev's honest beta - "BIG BROKEN WITH ASYNC WILL FIX WHEN I GET THE TIME/MOTIVATION" is the first line. On top of all that, the SD4X pipeline is inherently heavyweight and picky about VRAM; if you're new to upscaling, a pixel upscaler (ESRGAN-style) is the easier first step, and this is the "I want max-fidelity upscale" upgrade. Fun, but not the beginner's on-ramp.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — | |
| INPUT_images_key | STRING | images | — |
| INPUT_positive_key | STRING | positive | — |
| INPUT_negative_key | STRING | negative | — |
| scale_ratio | FLOAT | 4.000–10 | — |
| noise_augmentation | FLOAT | 0.0000–1 | — |
| OUTPUT_positive_key | STRING | positive | — |
| OUTPUT_negative_key | STRING | negative | — |
| OUTPUT_latent_key | STRING | latent | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — |