StableCascade_StageC_VAEEncode
Feed a real image into Stable Cascade's tiny latent space
- image
- vae
- stage_c
- stage_b
This is Stable Cascade's image-to-image entry point. Where StableCascade_EmptyLatentImage gives you a blank canvas for text-to-image, this node takes an actual image and pushes it into the Stage C prior's latent space so you can run img2img, inpainting, or "keep this composition, change the rest" work with Cascade.
The interesting part is that it's not a plain VAE encode. A normal VAEEncode would dump the image into the latent space at whatever resolution the VAE expects. Cascade's prior operates at a weird, heavily-squashed scale - that's the whole design - so this node first resizes the image down to match the prior's world, then encodes that. You see the same compression parameter here as on the empty-latent node, and it has to agree.
How it works
The node computes the prior's target size as (width // compression) * vae.downscale_ratio, upscales the image to that shape, then runs it through the VAE to get stage_c. The stage_b output is just zeros - a placeholder for the Stage B sampler, which doesn't need your input image at all. So one real input image becomes one real latent plus one blank one, and you hand both downstream exactly like you would the empties from StableCascade_EmptyLatentImage.
Inputs and outputs
- image (IMAGE) - what you want to push into the pipeline.
- vae (VAE) - the Cascade VAE (the Stage C encoder), not a generic SD/SDXL VAE. Different latent format, different channels; the wrong VAE gives you garbage or an outright failure.
- compression (INT, 4–128, default 42) - must match what the model was trained with. If you change it on this node, change it consistently everywhere in the graph.
Outputs: stage_c (into the Stage C KSampler) and stage_b (the blank Stage B start latent).
How you get it
Ships with ComfyUI core, no install. It's been there since Stable Cascade launched in early 2024. You still need the Stage C and Stage B checkpoints plus the Cascade VAE in your models folders; this node only does the encoding.
Where people get tripped up
The compression mismatch is the classic one: set this node to 42 and the empty-latent node to something else, and the prior receives latents at a resolution it wasn't trained for - results come out soft or misaligned in ways that look like model quality problems but are actually latent-space math. Keep the value consistent across the whole graph and you're fine.
Bigger picture: Stable Cascade has faded - SD3 and Flux took over within months, and the architecture's legacy is mostly the cautionary tale about its second decoder adding detail that wasn't in the latent. So if you're here, you're probably working with an old Cascade-based workflow or exploring how stage-based generation feels. For that, this node is the correct tool, and it behaves exactly the way the empty-latent node does once you've got your image in.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| vae | VAE | — | |
| compression | INT | 424–128 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| stage_c | LATENT | — |
| stage_b | LATENT | — |