Nodes/ComfyUI_MiniMaxH3_Director/MiniMax H3 Director Refine
ComfyUI Node

MiniMax H3 Director Refine

The second-pass upscale H3 clips actually need

By AIMixer·Created about a month ago·Updated about 16 hours ago· 1,414
MiniMax H3 Director Refine
  • refine_model
  • sigmas
  • upscale_model
  • refine
  • width
  • height
moderefine
upscale_methodh3_latent
latent_upscale_model
samplereuler
passes1
seed_modeinherit
aspect_ratio跟随导演台
megapixels1.0
width1280
height720
skip_fl2vtrue
confirm_first_passfalse

H3's happy place is a small canvas. The Director's default first pass is 864×480 - 0.4MP, deliberately, because that's where a 33B video model actually stays coherent. The problem is nobody wants to watch 480p. The classic answer is "generate low, upscale after," and that's exactly what MiniMax H3 Director Refine exists to automate - except it does the upscale the way a video diffusion model wants it done, not the way an image model does.

This node is a config pack, not a sampler. It has no image output and never samples on its own. You attach it to the Director's refine socket, tell it what kind of second pass you want, and the Director runs each segment through it. Leave the socket empty and behavior is unchanged: one pass, done.

The three modes

The mode menu is where you pick your philosophy:

  • refine - same-resolution second sample. No bigger canvas, just a fresh KSampler pass over the first result to clean it up. Great with a different, stronger UNET (refine_model) or after removing a first-pass Turbo LoRA.
  • upscale - enlarge to a target canvas first, then second-sample at the bigger size. This is the classic generate-then-polish-at-resolution pipeline, but for video latents.
  • latent_upscale - enlarge the H3 video latent only, no second sample. Fastest, least "re-painted", but you're relying on the upscaler model alone to add detail.

For upscale, the upscale_method decides how the first pass gets bigger. h3_latent upscales the H3 video latent with a 3D upscale model from models/latent_upscale_models/ - the option built for this model. lanczos is plain pixel interpolation, optionally fed through an upscale_model like RealESRGAN. nvidia_rtx_vsr uses NVIDIA's RTX Video Super Resolution, which needs the optional nvidia-vfx package and an NVIDIA GPU - the README is explicit that it's not a hard dependency because it would break AMD and cloud installs.

What you must wire

The part that trips everyone: refine and upscale modes require a sigmas input. This node doesn't generate its own noise schedule - you connect a ComfyUI BasicScheduler or ManualSigmas, pointing it at the same model the second pass will use (the Director's main model, or your refine_model if you're swapping UNETs). H3's sigma shift is applied internally by the Refine, so you don't add a SigmaShift node here. The example workflow in the pack shows it: BasicScheduler → Refine.sigmas.

The settings worth knowing

  • passes - how many refine rounds. Default 1. Only the first pass enlarges; later passes are same-resolution refines. Yes, it goes to 9999. No, you don't need that.
  • skip_fl2v - default on. Second-pass sampling changes the picture, and it loves to drift those pinned first/last keyframes. The node skips fl2v shots by default to protect them; turn it off if you want fl2v refined too.
  • confirm_first_pass - a two-queue workflow. First Queue runs the first pass and writes a cache, blocking the main images output; second Queue with the same seed skips straight to refine. Useful when you want to eyeball the 480p result before spending the compute, but it demands a fixed seed.
  • seed_mode - inherit reuses the Director's seed; offset walks it +1, +2 per pass.
  • Canvas controls (aspect_ratio, megapixels, custom width/height) set the target after upscale - the Director stays at its own first-pass resolution. 1.0MP at 16:9 lands around 1376×768.

Outputs and troubleshooting

refine is the pack that plugs into the Director; width and height just report the resolved target canvas. After a run, the Director's images is the refined result and images_pre_refine is the untouched first pass - keep both if you want to judge whether the second pass earned its compute.

Where it goes wrong: forget the sigmas wire and refine silently won't run the way you expect; expect it. Upscaling from 0.4MP to real 720p/1080p will happily eat VRAM, so keep an eye on memory between segments. And if you're in a region excluded by the H3 license (US, EU, UK, South Korea), that restriction applies to the whole pipeline - the refine pass doesn't change what you're allowed to run.

CategoryMiniMaxH3

Inputs (15)

NameTypeDefaultDescription
modeCOMBOrefinerefine = 同分辨率二采(精修)。upscale = 先放大到目标画布再二采。latent_upscale = 只放大 H3 latent,不再二采。
upscale_methodCOMBOh3_latent仅 mode=upscale。h3_latent = 先按目标画布放大 H3 视频 latent,再二采(下方选 3D 权重)。lanczos = 像素插值;可另接 upscale_model(RealESRGAN 等)。nvidia_rtx_vsr = NVIDIA RTX Video Super Resolution(需 nvidia-vfx + NVIDIA GPU)。
latent_upscale_modelCOMBOH3 3D latent 放大权重。放到 ComfyUI/models/latent_upscale_models/,文件名含 3d(如 minimax_h3_latent_upscaler_3d_*.safetensors)。mode=latent_upscale,或 upscale + h3_latent 时使用。
samplerCOMBOeuler二采采样器。海螺案例用 euler;BasicScheduler 高质量二采常用 res_multistep。
passesINT11–9999精修次数。1 = 一次二采。upscale 时只有第 1 次放大,之后都是同分辨率精修。latent_upscale 不二采,此值无效。
refine_modeloptMODELSecond-pass UNET (二采模型)。不接则用导演台主模型。适合一采挂 Turbo LoRA、二采卸掉或换另一套。
sigmasoptSIGMAS二采噪声表。接 Comfy 自带 BasicScheduler 或 ManualSigmas。mode=refine / upscale 时必须接线。BasicScheduler 请接和二采相同的 MODEL(导演台主模型或 refine_model)。H3 的 SigmaShift 仍由 Refine 内部套上。
upscale_modeloptUPSCALE_MODEL可选。用「加载放大模型」接入,例如 RealESRGAN_x2plus。仅 mode=upscale 且 upscale_method=lanczos 时使用。不接则纯 lanczos 插值。选 nvidia_rtx_vsr / h3_latent 时忽略此口。
seed_modeoptCOMBOinheritinherit = 用导演台 seed;offset = 每轮 seed+1、+2…。
aspect_ratiooptCOMBO跟随导演台放大目标画布,算法同导演台「输出分辨率」。导演台是一采分辨率(例如 0.4 MP),这里是放大后的目标(例如 1.0 MP)。跟随导演台:按导演台画布比例推 720P 档。比例预设:配合百万像素。自定义:直接填宽高(对齐 ×32)。
megapixelsoptFLOAT1.00–16百万像素,同导演台 ResolutionSelector。1.0 MP 在 16:9 约为 1376×768(对齐 32)。仅比例预设时生效。
widthoptINT12800–8192自定义宽度(×32)。仅「自定义」时生效。
heightoptINT7200–8192自定义高度(×32)。仅「自定义」时生效。
skip_fl2voptBOOLEANtrue跳过首尾帧(fl2v)镜头的二采/放大。二采会改画面,容易把钉死的首尾帧画飘;默认跳过以保护关键帧。关掉则 fl2v 也走精修 / latent 放大。
confirm_first_passoptBOOLEANfalse先确认一采再二采。默认关:一采完立刻二采(与现在相同)。开:没有一采缓存时只跑一采并写出缓存/_pre.mp4;已有精确匹配的一采缓存(同一 seed 及一采参数)则跳过一采只跑二采。seed 请用 fixed,或第二次 Queue 前改回写出缓存时的 seed。

Outputs (3)

NameTypeDescription
refineMMX_DIR_REFINE
widthINT
heightINT