← Tech
▚Tech

H3 Field Report: 1088×1920 on 16 GB, Scene Text Overrides Camera Text, ClipProj v3.1 Checked

Full-resolution portrait H3 fits a 16 GB GPU with two lossless memory nodes at 3.2× the time; chained segments obey the scene sentence over the camera sentence; ClipProj v3.1 matched the 32B encoder and cut page-file use, not render time.

TL;DR — Signal: H3 renders 1088×1920 on an RTX 5080 16 GB (peak 15.12–15.44 GB, median 876 s per 5.17 s segment). Versus LTX 2.5: sharpness 14.5/8.3, motion 18.1/8.1. In chains, the repeated scene sentence decides where the camera goes. ClipProj v3.1: no measurable output change; page file 16.1 → 4.7 GB; time −1.4%.

Test bed: RTX 5080 16 GB, 32 GB RAM, ComfyUI 0.37.0, MiniMax H3 fl2va int8 with the 8-step turbo LoRA, image-to-video from one Qwen-Image 2.1 still, 124 frames at 24 fps per segment.

H3 at 1088×1920: start, middle and end of the 15-second shot

Findings

  1. Resolution is a memory limit, not a node limit. The i2v node accepts up to 16,384 px per side in 32 px steps. Two KJNodes patches plus tiled decoding bring 1088×1920 inside 16 GB.
  2. Cost: 3.2× time for 2.02× pixels. About 270 s per segment at 768×1344; 868–950 s at 1088×1920.
  3. H3 out-resolves LTX 2.5 at equal size — but LTX 2.5 is roughly 4.9× faster (175–188 s per segment) and followed "climbs between the buildings" upward where H3 went forward.
  4. Scene sentence beats camera sentence in chains. Segment 2 motion: 38.8 with the opening scene text, 36.6 after adding "never dropping down into the streets", 15.1 after rewriting the scene text to the rooftop view.
  5. ClipProj v3.1 is a RAM tool. Output unchanged on a same-seed A/B; VRAM and time nearly flat.

Configuration delta

  • KJNodes MiniMaxChunkFeedForward: chunks 4, seq_threshold 4096.
  • KJNodes MiniMaxLowVRAMAttention: head_chunks 8. Stated behaviour: "Reduces peak VRAM of the MiniMax H3 attention without changing the math."
  • VAEDecodeTiled: 512 / 64 spatial, 64 / 8 temporal.
  • Prompt recipe restored: constant-speed and clear-parallax tail, UE5-style polish line, negative naming "static, frozen, jump cut, scene change". Their absence, not the model, explained yesterday's crop-like H3 motion at 768×1344.

Measurements

Equal first frame, equal camera sentence, 1088×1920:

  • Edge sharpness — H3 14.5, LTX 8.3
  • Motion — H3 18.1, LTX 8.1
  • First-frame deviation — H3 3.3, LTX 3.3

Frame strip: H3 above, LTX below

Chained 15.49 s shot (3 × 124 frames, boundary duplicates dropped), motion per 1.5 s window:

  • Opening scene text on every segment: 13.3 · 16.9 · 15.5 · 23.5 · 41.4 · 41.7 · 35.9 · 31.9 · 19.0 · 14.3 (mean 25.1)
  • Scene text matched to the frame: 13.3 · 16.9 · 15.5 · 15.1 · 14.2 · 15.1 · 17.0 · 16.5 · 18.0 · 16.8 (mean 15.8)
Corrected chain. Rise, glide, approach. 1088×1920, 15.49 s.
LTX 2.5 reference, same still, 15.08 s.

Open issues: segment 3 flattens out rather than climbing; colour drifts brighter than the source still within segment 1.

ClipProj v3.1

  • What it replaces: H3's Qwen3-VL-32B encoder, 15.7 GB in NVFP4 per the model card, with Qwen3-VL-4B fp8 (5.2 GB, Krea-2 files) plus a 26 MB ridge projection. Node: ComfyUI-ClipProj.
  • Same prompt, seed, size: motion 15.1 → 14.5; sharpness 17.9 → 17.8; first-frame deviation 4.9 → 5.1.
  • Time 875.9 → 863.6 s. Peak VRAM 15.39 → 15.13 GB.
  • Page file at peak 16.1 → 4.7 GB; minimum free RAM 442 → 1,980 MB. Caveat: the ClipProj run followed a fresh ComfyUI start.
  • Context: staged models per H3 run total about 40 GB against 32 GB of RAM, per ComfyUI's log.
  • Author's own benchmark: "swapping the encoder costs about what re-rolling the seed costs."
  • Risk checked: the i2v node passes the first frame into the encoder (source); the projection was fitted on text positions. No effect observed on one clip.

Encoder A/B frames: 32B above, 4B + ClipProj below

Reproduce

Node chain as run:

UNETLoader               minimax_h3_fl2va_pruned_int8_convrot.safetensors
LoraLoaderModelOnly      minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors   strength 1.0
MiniMaxChunkFeedForward  chunks 4, seq_threshold 4096        # KJNodes
MiniMaxLowVRAMAttention  head_chunks 8                       # KJNodes
CLIPLoader               qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors   type minimax
MiniMaxH3ImageToVideo    width 1088, height 1920, length 124, first_frame = still
BasicScheduler           simple, 8 steps
CFGGuider                cfg 1.0
KSamplerSelect           res_multistep
VAEDecodeTiled           tile 512, overlap 64, temporal 64, temporal_overlap 8
CreateVideo              24 fps (+ VAEDecodeAudio for H3's own soundtrack)

Encoder swap:

CLIPLoader      qwen3vl_4b_fp8_scaled.safetensors   type krea2
ClipProjApply   mmh3-4b-ClipProj-v3.1.safetensors
# wire ClipProjApply's CLIP output into every node the 32B CLIP fed:
# both CLIPTextEncode nodes and MiniMaxH3ImageToVideo

Segment prompts, frame hand-off and metric definitions: full appendix.

FAQ

What is the resolution ceiling of the H3 image-to-video node?

None in practice: width and height are accepted up to 16,384 in 32-pixel steps. VRAM is the constraint; on 16 GB, 1088×1920 needs the two splitting patches.

Where does the extra time go at 1088×1920?

Into the sampler. Steps run about 100 s each; the segment total is 3.2× the 768×1344 figure for 2.02× the pixels.

Does ClipProj affect image-conditioned runs?

Not measurably here: first-frame deviation 4.9 vs 5.1 on a same-seed comparison. Sample size is one clip.

What does ClipProj cost?

Per its card, the 32B itself re-pronounces 5.8 phonemes out of 75 when only the seed changes; the v3.1 projections sit at 6.4 to 7.0. This test used no dialogue.


References: H3 · H3 for ComfyUI · guide · node source · KJNodes · LTX 2.5 · ClipProj card · ClipProj node · Krea-2 encoders.

Images and video: frames from the author's own renders on an RTX 5080. The first frame is a still generated locally with Qwen-Image 2.1.

#minimax-h3#video-generation#local-ai#comfyui#vram#ltx-video#text-encoder#workflow

← Back to all posts