Nodes/H3 Creator Palette/MiniMax H3 Refine Pass
ComfyUI Node

MiniMax H3 Refine Pass

Upscale the video, leave the soundtrack alone

By z3rofeels·Created 25 days ago·Updated 22 days ago· 1
MiniMax H3 Refine Pass
  • model
  • positive
  • negative
  • latent
  • LATENT
width1344
height768
seed0
steps20
cfg1.00
sampler_name
scheduler
denoise0.50

There are two ways to get a higher-res H3 render: sample big and slow, or sample fast at the native canvas and let a second pass refine. MiniMax H3 Refine Pass is the second option - the "two-pass" that the Creator's upscale: "two_pass" setting turns on. It takes the first pass's sampled AV latent, upscales the video half, and re-samples it partway down the schedule while leaving the soundtrack un-noised.

It's an MiniMax/internal node, written into the graph by the renderer (render.emit) when two-pass output is on. You set it from the Creator UI, not by hand.

How it works

H3's latent is a nested pair - video and audio, sampled together. Refine Pass unpacks it, upscales only the video half to your target width/height (bicubic, in latent space), and keeps the audio half untouched. Then it re-samples: how far down the schedule is the denoise (default 0.5), and there's a clever bit - the audio enters the first step pre-divided by (1 - starting sigma) so the zero-noise lerp puts it back exactly where the first pass left it. The soundtrack survives the refinement intact; only the picture gets the second opinion.

denoise is the whole game here, and the tooltip is blunt about the edge: it must stay strictly under 1.0. At 1.0, nothing of the first pass survives and the audio compensation divides by zero-ish math that breaks the carry-through. If the first pass is good, 0.5 keeps its structure while sharpening detail; push toward 0.7–0.8 and you're essentially re-generating, which defeats the point.

Inputs and output

  • model, positive, negative - the sampler stack, re-run at the higher resolution.
  • latent - the first pass's sampled AV latent, at the native canvas. That detail matters: this node upscales from native, so feed it the native-res pass, not something already scaled.
  • width / height - the target, defaults 1344×768. These are the resolution you're refining to.
  • seed, steps (20), cfg (1.0), sampler_name, scheduler - the refinement sampler. Defaults match the main H3 recipe (res_multistep, simple).
  • denoise - 0.5 default, the schedule slice described above.

Output is a single LATENT - the refined AV pair, ready to go through the reel node's decode like any other pass.

Why you'd use it

Two-pass exists for the classic hires-fix reason: sampling natively at 768 is fast, and refining a good base up to 1344 costs far less than sampling 1344 from scratch. On H3's heavy 33B transformer, that difference is real wall-clock time, and it's the reason the Creator offers it as the default upscale mode. It's also the only sane way to get detail on cards that don't fit 768p comfortably. Just keep denoise in the sensible band - the whole design assumes the first pass is worth keeping. Install is the shared pack install: ComfyUI Manager → search "H3 Creator Palette", or git clone https://github.com/z3rofeels/ComfyUI-H3-Creator-Palette into custom_nodes/, restart, hard-refresh. ComfyUI 0.34.0+ required.

CategoryMiniMax/internal

Inputs (12)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENTThe first pass's sampled AV latent, at the native canvas.
widthINT134432–8192
heightINT76832–8192
seedINT00–18446744073709550000
stepsINT201–200
cfgFLOAT1.000–30
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.500.01–0.99How much of the schedule the refinement runs. Strictly under 1.0: at 1.0 nothing of the first pass survives, and the audio carry-through divides by (1 - the starting sigma).

Outputs (1)

NameTypeDescription
LATENTLATENT