Image Blur_GPU (QQ)
Radial, directional, and gaussian blur with a cutout — the fake depth-of-field node
- image
- mask
- image
- bg_image
A generated Wan video of a person standing in a busy scene usually has one problem: everything is in focus, and real footage never is. ImageBlur_GPU is the fix - it blurs a video or image on the GPU in three modes (radial, directional, gaussian), and it has the feature that makes it actually usable for fake depth-of-field: a mask-based cutout that keeps the subject sharp while the background blurs. That's the whole "portrait shot" trick, in one node.
It's from siraxe/ComfyUI-WanVideoWrapper_QQ, the "(QQ)" Wan pack, and it's clearly built for the video-compositing side of that ecosystem - where you composite a sharp subject back over a defocused plate.
How it works
The three modes cover different jobs. radial blurs around a center point (set with center_x/center_y, normalized 0–1), falling off outward - good for vignette-style defocus or a moving-lens look. directional blurs along an angle (directional_angle, degrees) - that's your motion-blur/zoom aesthetic. gaussian is the plain uniform blur. Strength is a 0–100 slider, and num_samples (1–256, default 30) controls how many passes the radial/directional blur runs - more samples, smoother and slower.
The cutout path is where it gets interesting. Connect a mask and the node splits the work: the region inside the mask stays sharp (optionally with per-character blur parameters), and the background gets blurred. The extra controls - mask_grow, mask_blur, char_str_mult, char_blur, bg_blur, fill_cutout - fine-tune how the masked subject and background interlock. The two outputs are image (the composite result) and bg_image (the blurred background plate on its own), which is handy if you want to composite the sharp subject yourself with more control.
Inputs and outputs that matter
image- the IMAGE to blur.mode-radial,directional, orgaussian.strength- 0–100.center_x/center_y- the focal center for radial mode.directional_angle- blur direction for directional mode.mask(optional) - keep the subject sharp, blur the rest.
Outputs: image and bg_image.
Installation
cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-WanVideoWrapper_QQ.git
Restart ComfyUI (or ComfyUI Manager → "WanVideoWrapper_QQ"). Pure torch - no extra deps, and the pack's requirements.txt is empty. As always post-v1.3.4, remove any old wanwrapper_qq folder after the pack renamed to ComfyUI-SA-Nodes-QQ.
Common issues
The single biggest beginner surprise: the strength values are mode-dependent because of internal dampening - radial and directional divide your strength by 5 internally, so a strength of 50 gives you a noticeable radial blur but you may need to push higher for the same visual in directional mode. It's tuned that way deliberately, but it reads as "the slider doesn't do anything" until you crank it. Also, num_samples is your quality/VRAM dial - 256 samples at 2K across a long frame batch will make your GPU unhappy; drop it for preview passes. And the mask workflow only engages when a mask is connected; without one, you just get a plain blur and the bg_image output is effectively the same as image.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| mode | COMBO | radial | 3 options: radial, directional, gaussian |
| strength | FLOAT | 50.00–100 | — |
| directional_angle | FLOAT | 1800–360 | — |
| center_x | FLOAT | 0.500–1 | — |
| center_y | FLOAT | 0.500–1 | — |
| num_samples | INT | 301–256 | — |
| mask_grow | FLOAT | 0.00–30 | — |
| maskopt | MASK | — | |
| mask_bluropt | FLOAT | 0.00–50 | — |
| char_str_multopt | FLOAT | 1.000–3 | — |
| char_bluropt | FLOAT | 1.000–1 | — |
| bg_bluropt | FLOAT | 0.000–1 | — |
| duplicate_charopt | INT | 321–32 | — |
| fill_cutoutopt | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| bg_image | IMAGE | — |