Nodes/ComfyUI-SuperUltimateVaceTools/SuperUltimate VACE Upscale
ComfyUI Node

SuperUltimate VACE Upscale

Upscale your VACE video without nuking your VRAM

By bbaudio-2025·Created about a year ago·Updated 10 months ago· 139
SuperUltimate VACE Upscale
  • model
  • positive
  • negative
  • vae
  • input_video
  • croparea_list
  • reference_image
  • control_video
  • nag_params
  • video
width_upscale1280
height_upscale720
width832
height480
length81
pad_mask_limit32
crossfade_frame0
loopback_crossfade0
crop_reffalse
ref_as_init_framefalse
color_matchfalse
color_refinput_video
noise_aug0.000
seed0
steps20
cfg8.0
sampler_name
scheduler
denoise1.00

The problem this node exists for: you did an image-to-video with a Wan VACE model, got a nice 480p clip, and now you want it sharp at 1280x720. Most "upscalers" here just interpolate pixels - more pixels, no new detail. This one is the "more detail over time" kind: it re-runs VACE denoising on the video, tile by tile, so the output genuinely regenerates detail. That's also why it's slow and why it's interesting. If you've ever tried to run a 14B VACE model at full 720p in one shot and watched it OOM, you know exactly why it tiles.

How it works

Feed it a video plus the usual model (the tooltip is blunt: only VACE models are supported), positive/negative conditioning, and a vae. Two pairs of dimensions do the real work:

  • width_upscale / height_upscale - where you're going (e.g. 1280x720).
  • width / height - the tile you actually denoise (default 832x480).

The node computes a grid of overlapping tiles that covers the target size, runs a full VACE pass on each tile, then feather-blends them back together with soft masks. The overlap is derived from those two dimension pairs, and the README warns about the math: if width_upscale % width (or the height pair) leaves a tiny remainder, the overlap gets too small and you'll see seam lines. Keep the ratio sane.

Then there's temporal tiling. If your input has more frames than length, the video gets split into chunks with crossfade_frame as the transition region, each chunk denoised separately and crossfaded back together. Two things to know up front: if the frame count exceeds length and crossfade_frame is 0, the node throws an error - it refuses to cut without a transition. And if your video is a seamless loop, set loopback_crossfade to a few frames and it will crossfade the end back into the start so the loop survives the upscale.

The inputs that actually matter

For a beginner, ignore most of the sampler knobs and set these:

  • width_upscale, height_upscale, width, height - the target and the tile. Your VRAM budget lives here.
  • length - frames per temporal chunk, default 81. crossfade_frame must be > 0 if the clip is longer.
  • reference_image - the pack's recommended setup is a high-res version of your video's first frame. Wire it in and the upscale gets a stable identity anchor instead of drifting. crop_ref crops the reference to match each tile; ref_as_init_frame replaces the first frame with it outright. This node is basically designed for "high-res i2v, then upscale the result."
  • control_video - optional, same frame count as the input; a VACE control clip to keep motion in line while it regenerates detail.
  • color_match with color_ref (input_video or reference_image) - corrects color drift across tiles; the one feature that needs the extra color-matcher pip package.
  • denoise - the regenerate-detail dial. 1.0 is a full redraw; lower values get more conservative.

Everything else (steps, cfg, sampler_name, scheduler, seed, noise_aug) works like a normal KSampler. There's also an optional nag_params socket for the bundled NAG sampler if you'd rather save time than run plain CFG (see the NAG Paramters Setting article). Output is a single video IMAGE batch - wire it to a VHS-style save or a preview node.

Install

From ComfyUI Manager, search "SuperUltimateVaceTools". Or:

cd ComfyUI/custom_nodes
git clone https://github.com/bbaudio-2025/ComfyUI-SuperUltimateVaceTools

Restart ComfyUI. The only extra dependency is color-matcher (pip install color-matcher, or let the pack's requirements install it) and it's only used when color_match is on. You still need the Wan VACE model weights themselves in ComfyUI's model folders - this pack doesn't ship any.

Troubleshooting

  • "放大尺寸应该大于生成尺寸 / dimension_upscale should be large than dimension" - target dims must actually be bigger than the tile dims. Obvious when you think about it, less obvious at 2am.
  • "视频帧数大于length / frame count larger than length" - set crossfade_frame to enable temporal tiling.
  • Color-match errors - you skipped color-matcher.
  • After updating the pack, if a node looks stale or the workflow stalls with no output, right-click the node and Fix node (recreate) - that's the author's own fix from the release thread, and it's saved me once.

One honest warning: this is a marathon, not a sprint. Every tile is a full VACE generation, so a 720p upscale of an 81-frame clip is many minutes even on a 4090. Budget it like a long render, not like an upscaler. The payoff is a real detail regeneration that SeedVR2-class frame interpolation can't give you.

CategorySuperUltimateVaceTools

Inputs (28)

NameTypeDefaultDescription
modelMODELOnly VACE models are supported
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
input_videoIMAGE
width_upscaleINT128016–16384
height_upscaleINT72016–16384
widthINT83216–16384
heightINT48016–16384
lengthINT811–16384
pad_mask_limitINT328–512
crossfade_frameINT00–10000
loopback_crossfadeINT00–10000
crop_refBOOLEANfalse
ref_as_init_frameBOOLEANfalse
color_matchBOOLEANfalse
color_refCOMBOinput_video2 options: input_video, reference_image
noise_augFLOAT0.0000–1
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
croparea_listoptLIST
reference_imageoptIMAGE
control_videooptIMAGE
nag_paramsoptNAGParamtersSetting

Outputs (1)

NameTypeDescription
videoIMAGEUpscaled Video