Nodes/ComfyUI-VOID/VOID Inference
ComfyUI Node

VOID Inference

Pass 1, Pass 2, and why CFG 1 is the default

By shanef3d·Created 5 months ago·Updated 5 months ago· 0
VOID Inference
  • void_pipeline
  • video
  • quadmask
  • Pass 1
  • Pass 2
prompt
negative_promptThe video is not of a high quality, it has a low resolution. Watermark present in each frame. The background is solid. Strange body and strange trajectory. Distortion.
width672
height384
num_frames85
num_inference_steps50
seed42
guidance_scale1.0
denoise_strength1.00
enable_pass2true
pass2_guidance_scale6.0
warped_noise_path

This is the node that does the actual work. Give it a video, a quadmask, and a description of what the scene should look like after the object is gone, and it runs Netflix's VOID - Pass 1 base inpainting, then optional Pass 2 refinement - and hands you back two videos: the Pass 1 result and the Pass 2 result. Both outputs are always connected, so when you disable Pass 2 the second output just mirrors the first.

If you've never seen VOID: it's a purpose-trained video object-removal model (built on CogVideoX-Fun) that deletes objects and their physical interactions - the shadow under a cup, the contact patch where it sat, the reflection - instead of just painting over the pixels. That's the whole reason it exists, and it's why you'd pick it over a general-purpose video-to-video model that changes every frame. Masked inpainting still owns the "leave the rest of the frame exactly as it was" job; VOID just does that for time as well as space.

The inputs that matter

Most of the 15 inputs are defaults you can leave alone. The ones worth your attention:

  • video - [T,H,W,C]. Scaled down to fit within 480×720, snapped to multiples of 16, frames trimmed to (n−1) % 4 == 0, max 85. That resolution cap is the model's RoPE bound, not a bug - crop the region you care about out of your 4K footage before feeding it, which is what the community does in practice.
  • quadmask - the IMAGE output from VOID Quadmask Builder (0=remove, 63=overlap, 127=affected, 255=background).
  • prompt - describe the result, e.g. "A table with a cup." The model regenerates the masked region to match.
  • guidance_scale - default 1.0, and that's deliberate. VOID's Pass 1 is guidance-distilled: the guidance is trained into the weights, so CFG 1.0 is the paper's setting. Crank it to 7 because SDXL taught you to and you're double-applying guidance on a model that didn't ask for it. The KB's guidance-distillation essay makes exactly this point about 2026-era models.
  • num_inference_steps - 50 default, applies to both passes.
  • denoise_strength - 1.0 = full inpaint; lower it if you want the surrounding pixels to hold more strongly.
  • enable_pass2 - on by default; pass2_guidance_scale 6.0 is the recommended setting.
  • warped_noise_path - optional path to a noises.npy generated by make_warped_noise.py from the void-model repo. It seeds Pass 2 with optical-flow-warped noise for better temporal consistency. Leave empty and Pass 2 uses random init - fine for a first run.

Two details worth knowing. negative_prompt has a sensible default (low-quality, watermark, distortion - the standard video-regeneration gripes), and Pass 2 ignores it, always running with an empty negative. And the quadmask's "affected" region is where VOID's interaction-awareness lives: mask only the object and it degrades to plain inpainting, which works but leaves the shadow behind.

What to expect when you hit Run

It's heavy. Two transformer pipelines, each ~10 GB of weights, multi-diffusion over up to 85-frame windows. On a 12GB card with the default fp8+cpu-offload loader mode you'll wait minutes, not seconds, and that's normal. Pass 1's transformer is shunted to CPU before Pass 2 runs so the second pass gets the full GPU budget.

Troubleshooting

  • OOM at start - it's the memory mode on VOID Loader, not this node. Switch to fp8+cpu offload or sequential.
  • "Resolution too large" / weird dimension errors - the 480×720 cap again. Downscale or crop the input first; ComfyUI's VHS nodes have a resize/scale path.
  • Object removed but the shadow stays - that's a quadmask problem. You didn't mark the affected region, or your SAM masks didn't cover the interaction. Go back to the Quadmask Builder and add an affected_mask.
  • Everything flickers / Pass 2 output looks worse - try random-init Pass 2 first, then consider the warped-noise file; and remember VOID is young. Early-adopter reports from spring 2026 described results as "beta" quality - worth managing expectations on tricky clips.

The defaults are the paper's settings for a reason. Change prompt, set your frames, and let the passes do their thing.

CategoryVOID

Inputs (15)

NameTypeDefaultDescription
void_pipelineVOID_PIPELINE
videoIMAGEInput video [T, H, W, C]. Scaled down to fit within 480×720 if needed, then snapped to the nearest multiple of 16. Frame count is trimmed to (n−1) % 4 == 0, max 85.
quadmaskIMAGEQuadmask [T, H, W, C]. 0=remove 63=overlap 127=affected 255=background.
promptSTRINGDescribe the scene after object removal (e.g. 'A table with a cup.').
negative_promptSTRINGThe video is not of a high quality, it has a low resolution. Watermark present in each frame. The background is solid. Strange body and strange trajectory. Distortion. Used by both passes. Pass 2 ignores this (always runs with empty negative).
widthINT672Output width in pixels. Snapped to nearest multiple of 16.
heightINT384Output height in pixels. Snapped to nearest multiple of 16.
num_framesINT85Number of frames. Trimmed to nearest (n−1) % 4 == 0, max 85.
num_inference_stepsINT5010–200Denoising steps. Applies to both passes.
seedINT420–2147483647RNG seed. Applies to both passes.
guidance_scaleFLOAT1.01–20Pass 1 CFG scale. 1.0 = distillation mode (paper default).
denoise_strengthFLOAT1.000.1–1Pass 1 denoise strength. 1.0 = full inpaint.
enable_pass2BOOLEANtrueRun Pass 2 refinement. When off, Pass 2 output mirrors Pass 1.
pass2_guidance_scaleFLOAT6.01–20Pass 2 CFG scale. 6.0 recommended.
warped_noise_pathSTRINGOptional path to noises.npy from make_warped_noise.py (void-model repo). Seeds Pass 2 with optical-flow-warped noise for better temporal consistency. Leave empty to use random init.

Outputs (2)

NameTypeDescription
Pass 1IMAGE
Pass 2IMAGE