IAMCCS H3 R40 · Downstream Shot Lab Control
The R40 knobs that can only touch delivery — never the native take
- shot_lab
- helper
R40 Shot Lab is built on a clean separation: the native take is sacred, and everything you might want to fiddle with afterwards is stage-2 delivery. IAMCCS_MiniMaxH3ShotLabControlR40 is the control panel for that second category. Everything on it is a "Stage 2 ·" widget, and the whole node exists to guarantee that changing these settings never invalidates the expensive native work - the cached scout candidates, the selected native decode, and its saved H3 audio all stay put.
Why does that matter? In the R40 model, the native decode and its audio are the one expensive, hard-to-repeat artifact. The refine pass that sharpens and upscales it is comparatively cheap to rerun. So the pipeline isolates every delivery knob into a node whose output is consumed only by the stage-2 path. Change the refine seed all day and you're re-running minutes of stage-2 work, not re-rolling the whole shot. That's the caching architecture made tangible: one node whose job description is "rerolling me is cheap."
It outputs a single shot_lab object (plus a helper string that explains the node's own rules). That object is a small schema-versioned contract - iamccs.minimax_h3.r40.shot_lab - which is exactly the sort of thing you don't hand-type. You build it with this node and feed it to PixelRefineR40.
The widgets, and which matter
stage2_seedandstage2_seed_stride- the refine reroll seed and how it steps per segment. Default seed is a big 2026082801-looking number; this is the "try again with a different refine" knob.stage2_sigma_preset- the refine schedule:seedhunter_3,seedhunter_4,seedhunter_5, orauthored_scheduler. Think "how aggressive is the refine denoise."stage2_lora_enabled,stage2_lora_name,stage2_lora_strength- an optional refine LoRA. The author's own tooltip is the best summary and worth quoting: "Delivery/refine LoRA only. It never changes the selected native candidate or its saved H3 audio."stage2_sparse_enabled,stage2_sparse_video_budget,stage2_sparse_denser_edges- optional sparse-attention for the refine pass. Sparse attention is the faster/lower-VRAM path that trades some detail or prompt adherence; off is the quality-safe default, and the budget (0.05–1.0, default 0.3) controls how aggressive the sparsity gets.
For a beginner the two that actually do visible things are stage2_seed (reroll the refine until faces/text clean up) and stage2_sigma_preset (bump from seedhunter_3 to a stronger schedule if the refine looks too timid).
The catches
The feature is also the trap. Everything here is stage-2-only by contract - the node builds a labeled object that downstream nodes interpret - but if you wire shot_lab somewhere it shouldn't go, nothing stops you from misusing it. Keep it on the stage-2 path.
Sparse mode is the other one. Turn on stage2_sparse_enabled and the code reaches out to an external H3SparseAttention node from the H3-Optimizations custom node pack. If that pack isn't installed, you get a loud, specific error telling you to disable sparse mode or install H3-Optimizations. It's not a silent failure, but it is an extra dependency most people won't know they need until they tick that box. If you don't need the VRAM savings, leave sparse off.
Install
Part of IAMCCS-nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes
or via ComfyUI Manager (search "IAMCCS"), restart. Current ComfyUI (≥ 3.x), Python ≥ 3.12, PyTorch ≥ 2.8, plus MiniMax H3 and its VAEs - and check the H3 licence, which excludes the US, EU, UK and Korea. Install H3-Optimizations only if you actually want sparse attention.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| stage2_seed | INT | 20260828010–18446744073709550000 | — |
| stage2_seed_stride | INT | 10–18446744073709550000 | — |
| stage2_sigma_preset | COMBO | seedhunter_3 | 4 options: seedhunter_3, seedhunter_4, seedhunter_5, authored_scheduler |
| stage2_lora_enabled | BOOLEAN | false | — |
| stage2_lora_name | COMBO | Delivery/refine LoRA only. It never changes the selected native candidate or its saved H3 audio. | |
| stage2_lora_strength | FLOAT | 0.60-2–2 | — |
| stage2_sparse_enabled | BOOLEAN | false | — |
| stage2_sparse_video_budget | FLOAT | 0.300.05–1 | — |
| stage2_sparse_denser_edges | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| shot_lab | IAMCCS_H3_R40_SHOT_LAB | — |
| helper | STRING | — |