MiniMax H3 Learned Latent Upscale
Upscale the video before it ever becomes pixels
- latent
- upscale_model
- LATENT
There are two ways to make a video bigger. One is the classic route: decode, upscale pixels, re-encode - slow, and every frame is a fresh chance for the upscaler to disagree with its neighbors and shimmer. The other is what MiniMax H3's learned latent upscaler does: upscale the latent itself, while the video is still compressed, so the model's own learned detail synthesis happens in one coherent pass before you ever decode. VRGDG MiniMax H3 Learned Latent Upscale is the node that runs that second pass.
How it works
It takes two inputs: the latent you want to enlarge and the upscale_model loaded by the VRGDG MiniMax H3 Latent Upscale Model Loader. The scale control (default 2, range 1–4, step 0.1) sets how much bigger the latent gets. The node then pushes the latent through the learned upscaler, which expands it in latent space - no pixel decode in between - and hands back a LATENT ready for the rest of the pipeline.
"Learned" is the operative word. Unlike a lanczos or nearest-neighbor pass, this model was trained to add plausible detail consistent with H3's own latent space. It's closer to the generative-upscale end of the ladder than the resize end: it doesn't just stretch pixels, it infers structure the way the model that made the video would. That's also the tradeoff - it's a model, so it costs VRAM and can't be expected to perfectly preserve what was there, and it only makes sense to use it at the size you actually want, since you can't meaningfully upscale past what the learned space supports.
The workflow it slots into is the pack's H3 high-resolution path: sample at a modest resolution, run this upscale on the video latent, then use the VRGDG MiniMax H3 Replace with Upscaled Video Latent node to splice the enlarged video back into the joint audio-video latent before decode. If you decode the upscaled latent directly without recombining, you lose the audio latent that lives alongside it - the replace node is the other half of the pair.
The inputs that matter
latent- the video (or AV) latent to enlarge.upscale_model- from the loader node; it must be the H3 latent upscale model, not a pixel upscaler.scale- 2 is the sane default; 4 is a lot to ask of a latent-space model and usually soft.
The output is a LATENT - either decode it or feed it to the replace node to recombine with audio.
Install
Pack-wide: ComfyUI Manager → search vrgamedev (or https://github.com/vrgamegirl19/comfyui-vrgamedevgirl), restart, hard-refresh. Manual: git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl into custom_nodes, pip install -r requirements.txt. Windows portable: install Cython and scikit-build-core first; stay on Python 3.12.
Troubleshooting
If the node reports a missing or wrong-typed model, the loader is the problem, not this node - re-check that the H3 upscale model is in a registered latent_upscale_models folder. If the upscaled video comes out soft or washed at 4x, back the scale down to 2; latent upscalers interpolate structure, and asking for 4x in one hop is how you get mush. And the classic structural mistake: upscaling the video latent but never recombining it with the audio latent, then wondering why the final mux has no sound - keep the replace node in the chain.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| upscale_model | VRGDG_MINIMAX_H3_LATENT_UPSCALE_MODEL | — | |
| scale | FLOAT | 2.01–4 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |