Minimax H3 Latent Upscaler (3D)
Upscale in latent space, not pixels
- latent
- LATENT
Most upscalers work on pixels. PainterMinimaxH3LatentUpscaler works before that - it takes an H3 video latent and blows it up in latent space using a dedicated 3D upscale model, so the sampler downstream runs at a higher resolution from the start instead of you upscaling a finished video and hoping. It's a specialist tool for one model family, but for H3 users it's the difference between "generate at low-res and upscale" and "generate at the res you actually want."
What it is
A PainterNodes/latent node with one job: input a video LATENT, a target width/height, and a model file, and output an upscaled LATENT. It's purpose-built for MiniMax H3's VAE, which compresses space by a factor of 16 - the node converts your target pixel resolution into the matching latent dimensions (width // 16) so the 3D convolution model knows exactly how much to grow the tensor.
How it works
The mechanism is a pure 3D convolution upscale over the latent's time, height, and width axes. You give it the target video resolution in pixels; it aligns both to multiples of 16, computes the implied scale factor, normalizes the latent, runs the 3D upscale model with an embedding derived from that scale, and denormalizes back. If the target already matches the input's latent size, it returns the latent untouched - a nice no-op safety check. Because it operates in latent space, it upscales all frames at once (that's the "3D" part - time is a dimension), and the sampler after it sees the larger latent natively.
The device (cuda/cpu) and precision (fp32/fp16/bf16) controls let you trade speed for memory: fp16/bf16 are the sane defaults on most cards, fp32 if you're chasing exactness.
The inputs that matter
- latent - the H3 video latent to upscale.
- model_name - a dropdown that scans your
latent_upscale_modelsfolder. No model files, and the dropdown shows a placeholder telling you (in Chinese) to drop the model there. - width / height - target pixel resolution (defaults 1376×768), snapped to multiples of 16.
- device / precision - cuda vs cpu, and numeric precision.
Output: a single upscaled LATENT.
Install
Part of the PainterNodes pack. ComfyUI Manager → search "PainterNodes" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/princepainter/ComfyUI-PainterNodes
cd ComfyUI-PainterNodes
pip install -r requirements.txt
Then put the H3 latent upscale model file in your ComfyUI models/latent_upscale_models/ directory - the node's dropdown scans that exact folder, and an empty dropdown is the classic "I haven't downloaded the model" symptom.
Common issues
- Empty model dropdown - no model in
models/latent_upscale_models/. That's the number-one failure; the node scans that folder and no other. - "Please put the model file in the latent_upscale_models directory" - the Chinese-language error means exactly that; it raises when the placeholder option is still selected.
- This isn't a pixel upscaler - if you feed it an ordinary image latent or expect a finished, detail-rich high-res video out, you'll be confused. It's a latent upscale for the H3 pipeline; the sampler does the rest. For pixel-level detail you'd still use an image/video upscaler afterward.
Latent-space upscaling is the hidden middle step in a lot of pro video workflows - cheaper than pixel upscaling, and it happens before the expensive part. For H3 specifically, this is the node that gets you there.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| model_name | COMBO | 1 options: (请将模型放入: /tmp/ComfyUI/models/latent_upscale_models) | |
| width | INT | 137616–16384 | — |
| height | INT | 76816–16384 | — |
| device | COMBO | cuda | 2 options: cuda, cpu |
| precision | COMBO | fp32 | 3 options: fp32, fp16, bf16 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |