Nodes/Easy Use Anima/Latent Upscale with VAE (By)
ComfyUI Node

Latent Upscale with VAE (By)

The 1.25x pass that unsmears Anima

By nobinBB·Created 2 months ago·Updated 6 days ago· 3
Latent Upscale with VAE (By)
  • latent
  • vae
  • latent
◄scale_by1.25►
◄upscale_methodlanczos►
◄bislerp_ratio0.50►

If you've been running Anima and wondering why everything comes out a little soft, this node is the most repeated answer in the community: latent upscale at 1.25, then a second sampler pass at low denoise. It collapses the size-reading and width/height math that fix normally needs into one block.

What it does

It takes a LATENT and a VAE, decodes the latent to pixels, resizes the decoded image by your factor, and encodes the result straight back to a LATENT. One input, one output - no VAE Decode feeding an Image Scale feeding a VAE Encode, and no "get image size" or math nodes to keep in sync when you change the first pass's resolution.

That matters because the sizing in the usual hand-built chain is fragile. You scale the decoded image, not the latent grid, so the factor applies to real pixels: 1024 becomes 1280 at 1.25 without you computing anything.

Why latent, and why 1.25

The distinction the KB is careful about: an upscale makes pixels, and does not by itself add detail. What adds detail is the pass you run afterwards. So this node is only half of the recipe - the other half is a second EasyKSampler with denoise around 0.25–0.35 reading from the output latent. Run another 20–25 steps there after 10–15 in the first pass and Anima's default softness cleans up substantially.

Latent upscaling beats pixel upscaling for Anima specifically: it's faster, and it keeps the second pass operating on the model's own representation rather than a Lanczos-smeared JPEG of it. The one warning worth repeating is that Anima only tolerates it once. Users who upscale repeatedly report artifacts creeping in - one latent pass, then go to a dedicated upscaler or a generative detail pass if you need more.

Inputs

Only five, all required, and three of them are the whole story:

  • latent - the first sampler's output.
  • vae - the same VAE the latent came from. For Anima that's the 16-channel Qwen Image VAE; the loader's vae output is the correct thing to wire here. Mismatch it and you get garbage or an error, not a warning.
  • scale_by - default 1.25, range 0.01 to 8. The community default is a real default, not a placeholder.
  • upscale_method - lanczos or bislerp. Lanczos is the default and matches the reference workflow.
  • bislerp_ratio - only used in bislerp mode, and hidden in Lanczos mode. 0.00 is pure Lanczos, 1.00 is pure bislerp, and anything between blends the two results. Blend weight, in other words.

Output is a single latent. Wire it into the second sampler's latent input.

The reason this isn't just three core nodes

Under the hood it decodes, reads dimensions, calls ComfyUI's standard common_upscale, then re-encodes. The interesting part is a reshape: Anima's VAE decodes image latents as a five-dimensional B,T,H,W,C tensor even when the frame count is 1, and feeding that straight back into its encoder selects the temporal-video path - which can leave the VAE's internal output uninitialized. The node flattens decoded frames into an ordinary image batch before encoding, the same way the reference RES4LYF node does. That's a bug you'd otherwise spend an evening on, and it's the honest argument for using this instead of rolling your own chain.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/nobinBB/comfyui-easy-use-anima
pip install piexif

ComfyUI Manager → comfyui-easy-use-anima works too. Restart, and place it between your two samplers. No RES4LYF, no Easy-Use, and no extra model files are needed for this node.

Where people trip

The most common mistake is using this as a finishing node: upscale the latent, decode, and look at it, and nothing much changed except the size. The upscale is the setup; the second sampler with low denoise is the actual detail work. If your output looks identical-but-bigger, you skipped half the recipe.

Second: scale_by above ~1.5 in a single hop with a low-denoise second pass tends to leave repeated texture between the two bands of detail. Push to 1.25–1.35 per pass, and if you need bigger, do the rest in pixel space after you've decoded.

CategoryEasyUse-Anima/Latent

Inputs (5)

NameTypeDefaultDescription
latentLATENT—
vaeVAE—
scale_byFLOAT1.250.01–8—
upscale_methodCOMBOlanczos2 options: lanczos, bislerp
bislerp_ratioFLOAT0.500–1—

Outputs (1)

NameTypeDescription
latentLATENT—