Nodes/comfyui-svdint4/MiniMax H3 Latent Upscale
ComfyUI Node

MiniMax H3 Latent Upscale

Bigger clips without a pixel upscaler in sight

By wjie98·Created 2 months ago·Updated about 10 hours ago· 2
MiniMax H3 Latent Upscale
  • upscale_model
  • latent
  • conditioning
  • latent
  • conditioning
  • width
  • height
scale2.0

Here's the honest problem with running H3 on a Turing card: the model's native resolutions are heavy, and upscaling a decoded video is a separate, annoying project where every frame has to agree with its neighbors. MiniMax H3 Latent Upscale takes the third path - it enlarges the latent with a small learned upscaler before anything gets decoded, so you render at a modest size and let the upscaler carry you the rest of the way. This is the node that does the enlarging.

It's the second half of the pack's H3 upscale story: Load MiniMax H3 Latent Upscaler hands you the model, this node applies it.

How it works

The upscaler enlarges only the video stream - time and audio pass through exactly. The scale input is a total spatial pixel/token multiplier, and the tooltip is worth reading twice because the math isn't what you'd guess: 2.0 scales H/W by sqrt(2), and 4.0 scales H/W by 2. So it's a pixel-count multiplier, not a per-side multiplier. Output dimensions are rounded up to H3's 2x2 latent patch grid, and the node also reports the resulting aligned pixel width and height so you can wire them into your graph instead of guessing.

There's an optional CONDITIONING input for FL2AV keyframes: when you're conditioning with first/last frame latents, those get upscaled with the same learned model so they stay aligned with the enlarged video. Ref2AV image/video/audio references are left alone, and no text or VAE conditioning stage is rerun - it's a targeted, cheap operation.

The inputs that matter

  • upscale_model - from the pack's loader. It's a custom type; nothing else plugs in here.
  • latent - the H3 AV latent.
  • scale - default 2.0. Remember the semantics: 2.0 ≈ 1.41x per side, 4.0 = 2x per side. Range 1.0–16.0, step 0.1, so it's a continuous dial, not a fixed ladder.
  • conditioning (optional) - FL2AV conditioning whose keyframe latents should follow the same upscale.

Outputs: latent (upscaled), conditioning (if you fed it, returned aligned), width, height (aligned pixel dimensions).

How to install

cd ComfyUI/custom_nodes
git clone https://github.com/wjie98/comfyui-svdint4
cd comfyui-svdint4
python -m pip install -v --no-build-isolation -e ./kernel

Plus the upscaler weights in models/latent_upscale_models/ (from LBH-123-AI/Minimax_h3_latent_Upscaler). Restart ComfyUI.

The honest take

This is the "render small, upscale latent, decode big" flow that gets H3 onto cards that could never touch native-resolution generation. The classic mistake is thinking scale is a per-side number and wondering why everything came out too wide - think of it as total pixels. And don't stack this node on top of itself; the latent upscaler is learned and expects H3 latents, so running it twice compounds distortion instead of doubling the benefit. One clean pass, then VAE decode.

CategoryTuring Utils/latent

Inputs (4)

NameTypeDefaultDescription
upscale_modelTURING_UTILS_H3_LATENT_UPSCALE_MODEL
latentLATENT
scaleFLOAT2.01–16Total spatial pixel/token multiplier. For example, 2.0 scales H/W by sqrt(2), while 4.0 scales H/W by 2. Time and audio are preserved. Output H/W are rounded up to H3's 2x2 latent patch grid.
conditioningoptCONDITIONINGOptional FL2AV conditioning whose first/last keyframe latents should follow the same spatial upscale.

Outputs (4)

NameTypeDescription
latentLATENT
conditioningCONDITIONING
widthINTAligned pixel width produced by the upscaled H3 video latent.
heightINTAligned pixel height produced by the upscaled H3 video latent.