Nodes/VELVET VICE — MiniMax H3/VELVET VICE MiniMax H3 — Refine Resolution Plan
ComfyUI Node

VELVET VICE MiniMax H3 — Refine Resolution Plan

The 32-pixel grid matcher behind H3's re-encode refine path

By Velvet-Vice·Created 10 days ago·Updated 7 days ago· 2
VELVET VICE MiniMax H3 — Refine Resolution Plan
    • width
    • height
    • status
    width1344
    height768
    scale1.25

    Video models are picky about geometry in a way image models mostly aren't. H3's canvas works in 32-pixel steps, and if you hand it an off-grid resolution you're asking for tiling artifacts or a sampler that behaves oddly. When you upscale a video for a refine pass, someone has to do the arithmetic. This node is that someone - a pure-math helper that takes your base resolution and a scale, and spits out the exact dimensions you should resize to.

    What it computes

    Three inputs, all you'd expect:

    • width - INT, default 1344 (32–8192).
    • height - INT, default 768 (32–8192).
    • scale - FLOAT, default 1.25, range 1.0–2.0 in 0.05 steps.

    It multiplies width and height by the scale, clamps to the 32–8192 bounds, then rounds each result to the nearest multiple of 32. Three outputs: the planned width and height as INTs, plus a status STRING you can show in the UI, formatted like RE-ENCODE TARGET 1664x960 · ×1.25.

    Worth knowing: that's not always the number you'd guess. The default 1344×768 at ×1.25 "should" be 1680×960, but 1680 isn't a multiple of 32, so the rounding snaps it to 1664×960. If you did this in your head you'd probably get it wrong - which is the whole argument for a node that owns the math and keeps every consumer of the number consistent.

    Where it sits

    This is the planning end of the Decode → Upscale → Re-Encode refine route in the pack's Quality Refine feature (v1.5.0). The route works like a video hires fix: finish pass 1, decode to frames, upscale to a higher resolution, re-encode, then run a low-denoise second sampler (LIGHT 0.12 / HIGH 0.20 / CUSTOM up to 0.35). Before anything gets resized, someone has to know what to resize to - that's this node's role.

    It doesn't touch pixels, run a model, or take GPU time. It just produces numbers for the nodes downstream to agree on:

    • Its width/height feed VelvetViceMiniMaxH3ImageResizeExact, which actually upscales the decoded frames.
    • The same plan feeds the re-encode conditioning and, via VelvetViceMiniMaxH3ReencodeAVPrepare, the rebuilt [video, audio] latent for pass 2.
    • status is there for logging or a display widget so you can see the target at a glance.

    The practical take

    You'll rarely touch this node directly - it's VELVET VICE/MiniMax H3/Internal, pre-wired in the shipped v1.5.0 workflow, and the number you actually choose is the scale upstream (default 1.25). Where people get burned is cranking that scale toward 2.0 on a long or high-res clip: every extra step of decode → upscale → re-encode multiplies memory and render time, and the second sampler then has to chew the bigger latent. If VRAM is tight, stay near the default rather than chasing resolution you may not be able to finish. One more honest note: this whole pipeline runs the local H3 weights, and the H3 Community License excludes the US, EU, UK and Korea - worth checking before you invest in the stack.

    Installing the pack

    This node ships in the Velvet Vice MiniMax H3 pack. In ComfyUI Manager, search velvet-vice-minimax-h3 and install, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Velvet-Vice/velvet-vice-minimax-h3
    

    Restart ComfyUI after installing. The pack has no pip dependencies of its own - what it needs is a ComfyUI current enough to run MiniMax H3 natively, plus the H3 model files and VAE in your models folders. A compatible Turbo LoRA is strongly recommended once you actually render.

    CategoryVELVET VICE/MiniMax H3/Internal

    Inputs (3)

    NameTypeDefaultDescription
    widthINT134432–8192
    heightINT76832–8192
    scaleFLOAT1.251–2

    Outputs (3)

    NameTypeDescription
    widthINT
    heightINT
    statusSTRING