Nodes/IAMCCS-nodes/IAMCCS H3 ULTIMATE LATENT · TILED
ComfyUI Node

IAMCCS H3 ULTIMATE LATENT · TILED

H3 delivery that keeps one tile in VRAM at a time

By IAMCCS·Created 12 months ago·Updated 7 days ago· 117
IAMCCS H3 ULTIMATE LATENT · TILED
  • model
  • clip
  • video_vae
  • audio_vae
  • sampled_latent
  • stage1_conditioning
  • cine_linx
  • native_frames
  • native_audio
  • motion_state
  • bridge_frame
  • first_frame_override
  • last_frame_override
  • ref_image_1
  • ref_image_2
  • ref_image_3
  • ref_image_4
  • ref_video
  • ref_video_audio
  • ref_audio
  • video_path
  • report
◄resolved_render_id—►
◄native_saved_report—►
◄current_segment—►
◄total_segments—►
◄context_trim_frames—►
◄join_trim_frames—►
◄queue_next_segmenttrue►

Upscaling a latent video model the obvious way means holding the entire latent pass in memory. For a long H3 programme that's the difference between "renders overnight" and "OOM in the third segment" - and it's why the interesting work in this area is always about doing the same job in pieces.

IAMCCS_MiniMaxH3UltimateTiledDelivery is the bounded-memory delivery route. Instead of one full-latent pass it keeps exactly one temporal/spatial piece in the sampler at a time, which is what makes it the practical default while the pack's R41 full-latent route stays available as the high-VRAM quality reference.

Inputs

This is a delivery node, so it takes the whole handoff: model, clip, video_vae, audio_vae, sampled_latent, stage1_conditioning, cine_linx, native_frames, native_audio, resolved_render_id, native_saved_report, current_segment, total_segments, context_trim_frames, join_trim_frames, and queue_next_segment (default true).

Optional: motion_state, bridge_frame, first_frame_override, last_frame_override, ref_image_1–ref_image_4, ref_video, ref_video_audio, ref_audio.

Most of those are pass-through from the earlier stages - the point is that this node sits at the end of the universal chain and receives the same provenance the rest of the delivery group exchanges. queue_next_segment is the one you'll actually flip: leave it true and the Shotboard queue continues to the next segment after this one finishes; set it false to render one segment and stop, which is what you want while tuning.

Outputs are video_path and report. The path is the encoded file; the report is your audit line.

The tiling parameters aren't on the node

They live in the pack's H3 settings, and the node reads them from the plan. Worth knowing their shape even so, because it explains the timing:

  • Spatial tiles default to 512×512 with 96px overlap and a 32px fade, snapped to multiples of 32. overlap_width/overlap_height are clamped to the tile size minus 32 so you can't ask for more overlap than tile.
  • Temporal chunking defaults to 102 frames, rounded to a multiple of 17 - H3's temporal cadence - with 17-frame overlap, and overlap can never exceed chunk minus 17.
  • Overlap handling is earlier with a linear blend by default, and anchor_strength sits at 0.999, which is what keeps the tiles locked to their reference rather than each drifting off on its own.

If your tiled output shows a faint grid, the fade and overlap are too small for your content; if it shows repeated detail, the overlap is working against you and the anchor is too strong. Those two symptoms have opposite fixes, so change one thing at a time.

Dependencies that will stop you

Two, and both are named in the error rather than discovered later:

  • Comfyui-MMH3-UltimateUpscale - the tiled upscale engine. Without it the node can't do anything and says so.
  • A MiniMax H3 3D latent upscaler checkpoint in models/latent_upscale_models, selected in IAMCCS Settings. That's a real download, not a config toggle.

If the RTX path is requested, the target is halved and grid-rounded before the RTX pass finishes it, so the tile job stays cheap and the final size is handled by the dedicated pass.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git

Or Manager → search IAMCCS, restart. Then add the MMH3 Ultimate Upscale pack and drop the H3 latent upscaler into models/latent_upscale_models.

Native H3 audio stays the final authority in this route - the audio you get out is the one the model generated, not something the upscale touched. And because it's per-shot delivery, it composes with the queue: each segment lands as its own file with its own report, which is a lot easier to review than one enormous master at the end of a four-hour run.

CategoryIAMCCS/MiniMax H3/Universal Delivery

Inputs (27)

NameTypeDefaultDescription
modelMODEL—
clipCLIP—
video_vaeVAE—
audio_vaeVAE—
sampled_latentLATENT—
stage1_conditioningCONDITIONING—
cine_linxIAMCCS_SUPERNODE_LINX—
native_framesIMAGE—
native_audioAUDIO—
resolved_render_idSTRING—
native_saved_reportSTRING—
current_segmentINT—
total_segmentsINT—
context_trim_framesINT—
join_trim_framesINT—
queue_next_segmentBOOLEANtrue—
motion_stateoptIAMCCS_H3_MOTION_CONTEXT—
bridge_frameoptIMAGE—
first_frame_overrideoptIMAGE—
last_frame_overrideoptIMAGE—
ref_image_1optIMAGE—
ref_image_2optIMAGE—
ref_image_3optIMAGE—
ref_image_4optIMAGE—
ref_videooptIMAGE—
ref_video_audiooptAUDIO—
ref_audiooptAUDIO—

Outputs (2)

NameTypeDescription
video_pathSTRING—
reportSTRING—