Nodes/h3-latent-upscaler/MiniMax H3 Conditioning Upscale
ComfyUI Node

MiniMax H3 Conditioning Upscale

The easy node to forget when you upscale MiniMax H3

By rockerBOO·Created 2 months ago·Updated 2 months ago· 10
MiniMax H3 Conditioning Upscale
  • conditioning
  • CONDITIONING
scale_by1.50
upscale_methodbilinear

MiniMax H3 Conditioning Upscale is the bookkeeping half of rockerBOO's h3-latent-upscaler two-pass pipeline, and it's the node people skip because nothing seems to happen when they wire it. It exists so the thing you'd never think about - the reference images and keyframes riding inside your CONDITIONING - keeps working after you make the video canvas bigger.

Here's the setup. H3 workflows like MiniMaxH3ReferenceToVideo (ref2va) or MiniMaxH3ImageToVideo don't just hand the model a text embedding. They stuff visual latents into the conditioning's metadata - under keys like minimax_refs and minimax_keyframes - so the model can attend to your reference images and keyframes while it generates. Those latents are encoded at whatever resolution you supplied. Now upscale your pass-1 video latent with MiniMaxH3LatentUpscale, and suddenly the conditioning is full of images encoded for a smaller canvas than the one the model is about to denoise. The references render at the wrong relative scale, and the token layout stops lining up with the RoPE rows of the grown frame. Result: pass 2 ignores your references or mangles them.

This node exists to stop that. It walks the conditioning, finds any minimax_refs / minimax_keyframes visual latent blocks, and upscales them with the same interpolator and scale you applied to the video. It updates the latent dimensions alongside, and it leaves audio-kind blocks alone. Cleanest part: if neither key is present - say you're on a plain text-to-video graph - it's a no-op that passes the conditioning through untouched. The pack's README says outright: leave it wired even for t2va graphs, because it costs nothing when there's nothing to do.

Inputs and output

  • conditioning - your pass-1 CONDITIONING, the same one that fed the pass-1 guider.
  • scale_by - default 1.5. Set this to exactly the same value as the paired MiniMaxH3LatentUpscale node. They must track each other or the whole point is lost.
  • upscale_method - default bilinear. Same rule: mirror the paired node.
  • Output: CONDITIONING - feed this into a fresh BasicGuider for pass 2. That last step matters and is easy to trip over: the code clones the conditioning, and the README is explicit that you must rebuild the guider from the returned conditioning rather than reusing the one built on the pre-upscale version. A stale guider is carrying the old-shape condition around anyway.

Installing and the usual traps

Same as the rest of the pack - ComfyUI Manager search for h3-latent-upscaler, or:

cd ComfyUI/custom_nodes
git clone https://github.com/rockerBOO/h3-latent-upscaler

restart, done. No pip dependencies. You do need a ComfyUI new enough to have core H3 support (the pack's nodes import comfy.ldm.minimax and use the comfy_api.latest extension API); if nothing from the pack shows up after install, update ComfyUI first.

If your pass-2 output looks like the model forgot your reference entirely, or the reference subject drifts between the two passes, your first suspect is a mismatch: MiniMaxH3ConditioningUpscale's scale_by / upscale_method don't match the MiniMaxH3LatentUpscale next to it. It's the most boring failure in the workflow and the one everyone hits. Second suspect is reusing a pass-1 guider instead of rebuilding it from the upscaled conditioning. Both are five-second fixes. The full two-pass graphs in the repo's example_workflows/ folder show the wiring if you'd rather not rebuild from scratch.

Categorymodel/conditioning/minimax

Inputs (3)

NameTypeDefaultDescription
conditioningCONDITIONING
scale_byFLOAT1.500.01–8
upscale_methodCOMBObilinear5 options: nearest-exact, bilinear, area, bicubic, bislerp

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING