ComfyUI Node

AICG-渲染器(一采)

Render the Cheap Version First, Then Decide If It Deserves a Second Pass

By JGRFW·Created about a month ago·Updated about 13 hours ago· 261
AICG-渲染器(一采)
  • h3_context
  • model
  • sampler
  • sigmas
  • video
  • pass1
◄noise_seed0►
◄sampler_name▾►
◄scheduler▾►
◄steps20►
◄denoise1.00►
◄sample_preview关►
◄preview_interval1►
◄cleanup_after_run卸载模型►

Two-pass rendering, without the tangle

The hi-res fix is the oldest trick in the book: generate small, then re-render big with partial denoising so the model adds detail instead of inventing a new composition. Upscaling essays have been saying this since SD 1.5, and it applies to video for the same reason - you can't afford to explore at final resolution, so you explore cheap and finish expensive.

On H3 with the AICG3D pack, that used to mean a canvas full of latent splitting, tiling, re-encoding and a second sampler. AICG-渲染器(一采) (AICG3D_H3RenderPass1) is the first half of the split, done as one node: sample, decode both streams, compose. It gives you a finished clip and, alongside it, a pass1 payload that the second-pass node can pick up.

The name literally means "first sampling pass". This is the cheap version - low resolution, full denoise, whatever schedule you like - and it's already watchable. If the shot is bad and the composition is wrong, you find out here rather than after a two-times upscale.

What it actually does

Same sampling core as the other renderers: the five-in-one path, with noise_seed driving the noise and sampler_name / scheduler / steps / denoise describing the schedule. Then the joint AV decode - the packed latent split back into picture and sound, each through its own VAE - and a compose step into a VIDEO at the context's frame rate.

Two outputs, and the second one is the point:

  • video - the first-pass clip. Wire it to SaveVideo and you're done; this is a complete render.
  • pass1 (AICG3D_H3_PASS1) - the AV latent plus the H3 context, packaged for AICG-渲染器(二采放大). It's not a LATENT; you can't feed it to a decoder directly. It's a bundle because the second pass needs the latent and everything that described how it was made.

Optional model, sampler and sigmas work as elsewhere: an external sampler/SIGMAS pair overrides the sampler name and the scheduler/steps/denoise trio, which is how the DMAD four-step setup gets in.

The widgets nobody else has

This node has two settings the plain renderer doesn't, both about watching the render:

  • sample_preview (关 by default) - when on, every intermediate step is pushed through ComfyUI's native preview channel and painted on the node. Costs one preview decode per step. Handy when you're dialling in a prompt; turn it off when you're rendering a batch, because it's pure overhead then.
  • preview_interval - how many steps between previews. The first and last steps always push one regardless, so you always see the opening and the finish.

denoise here has a tooltip worth reading: 1.0 means start at the very beginning of the sigma table. Since this is the first pass, that's what you normally want; the partial-denoise move belongs downstream.

cleanup_after_run defaults to unloading the model and emptying the cache after the run. With a second pass about to load its own models, that default is sensible - say so and move on. Switch it to 释放缓存 only if you're doing repeat first passes and have the VRAM.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/JGRFW/comfyui-AICG3D

Or via Manager, searching AICG3D or 短剧工作台 in the Registry. Restart, then Ctrl+F5. requirements.txt is a single line - imageio-ffmpeg - and that's for the sequence combiner, not for this node.

H3 model files go where the pack's loader expects them: transformers in models/diffusion_models, text encoder in models/text_encoders, both VAEs (video and audio, they are not the same file) in models/vae. The second-pass node additionally wants a latent upscaler checkpoint, but you don't need it to use this one.

Traps

Feeding it a segmented context. Single-clip renderers only. If the context came from the Context Segments node, the sampler inside refuses and tells you to use Segment Sample. Plan multi-shot work down the segment chain instead.

Expecting pass1 to be reusable as a latent. It's a payload dict; the second-pass node is the only consumer that understands it. Trying to encode or decode it directly gets you a type error.

Turning previews on and then complaining it's slow. One decode per step on a 33B video model is not free. preview_interval of 5 gets you most of the feedback for a fifth of the cost.

Judging the shot at first-pass resolution. That's the whole point of the design - first pass is a draft. Faces and fine texture are the second pass's job; don't tune the prompt to fix mush you're about to upscale.

CategoryAICG3D/提示词与 Skill

Inputs (12)

NameTypeDefaultDescription
h3_contextMINIMAX_H3_CONTEXT—
noise_seedINT00–18446744073709550000一采噪声种子;0 = 每次随机。
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
stepsINT201–10000—
denoiseFLOAT1.000–1一采降噪:1.0 = 从整条 sigma 调度表开头跑。
sample_previewCOMBO关开:一采每一步都把中间结果走 ComfyUI 原生预览通道推给前端,实时采样画面直接显示在这个节点上(右侧图片流面板同样能看到),代价是每步多一次预览解码;关:只留底部那条百分比进度条。
preview_intervalINT11–1000每隔多少步推一张预览图(1 = 每步都推)。调大能省掉预览解码与前端刷新的开销,采样更快、画面刷新更慢;第一步与整段采样的最后一步始终会推一张,方便看开局与成图。
cleanup_after_runCOMBO卸载模型跑完这个节点后怎么收尾:卸载模型 = 连模型一起卸出显存并回收内存,占用最低,但下次运行要重新加载;释放缓存 = 只把 PyTorch 缓存的显存还给驱动并回收内存,模型留在显存里,下次跑得快;不处理 = 保持 ComfyUI 默认行为。
modeloptMODEL—
sampleroptSAMPLER可选外部采样器,例如 DMAD Sampler。连接后覆盖 sampler_name。
sigmasoptSIGMAS可选外部 Sigmas,例如 DMAD Sigmas。连接后覆盖 scheduler、steps 和 denoise 截断。

Outputs (2)

NameTypeDescription
videoVIDEO—
pass1AICG3D_H3_PASS1—