Image SSAO (Ambient Occlusion)
Fake 3D shading from a flat image and a depth map
Ambient occlusion is a rendering trick from the 3D/game world: it darkens the little crevices, corners, and contact points where two surfaces meet, because in real life less bounce light reaches those spots. It's why a CG render without AO looks flat and a render with it looks like it has weight. WAS Node Suite's Image SSAO brings that trick to a flat 2D image - no 3D scene required, just a depth map to fake the geometry.
The author flags it as an experimental beta node, and that's worth taking at face value. It's not a polished, battle-tested filter like High Pass or Chromatic Aberration elsewhere in this pack - it's closer to "here's a fun screen-space effect I got working," and it shows in how fiddly the results can be.
How it works
Screen Space Ambient Occlusion, as the technique's actually implemented in games, samples the depth buffer around each pixel and darkens it in proportion to how enclosed it looks - a crease between two objects reads as more occluded than an open, flat surface. This node does the same thing against a depth map instead of a real depth buffer: it needs an image plus depth information, and per the README that depth information can come from two places - the pack's own MiDaS Depth Approximation node (fed by MiDaS Model Loader, also covered in this pack) computing it for you, or you handing it a depth map you already made, say from a ControlNet depth preprocessor. Either way, out comes an image with the occlusion shading baked into it.
What you actually feed it
The two things that matter are the source image and a depth map. If you don't already have MiDaS wired up elsewhere in your graph, that's your first stop - load a MiDaS model, run Depth Approximation on your image, and pipe the result here alongside the original. If you already generate depth maps for ControlNet (most photoreal workflows do), you can often reuse that map directly instead of running MiDaS a second time.
Installing it
Grab the whole suite through ComfyUI Manager - search "WAS Node Suite" and install - or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui
cd was-node-suite-comfyui
pip install -r requirements.txt
(On a portable Windows build, run path\to\ComfyUI\python_embeded\python.exe -s -m pip install -r requirements.txt instead.) Restart ComfyUI and the node shows up in the WAS Suite menu.
Where this trips people up
The pack itself hasn't been under active development since December 2023 - the author says so directly in the README, and points people who want fixes toward forking it. In practice that means the most common failure mode isn't this node specifically, it's the whole suite: after a ComfyUI core update, WAS-NS can throw "Import Failed" because it pins or downgrades packages (BLIP support being the recurring culprit) that the newer core expects at a different version. If SSAO - or any WAS node - vanishes from your menu after an update, check the console for an import error before assuming the node itself broke.
Beyond that, it's genuinely a beta filter: expect to fight with it a bit. If the occlusion looks muddy or overbaked, it's almost always the depth map, not the SSAO node - a soft, low-contrast MiDaS pass gives you soft, low-contrast occlusion. Try a sharper depth source (DPT-Large over the small MiDaS variant, or a proper ControlNet preprocessor) before assuming the effect itself is broken. And because it's screen-space rather than true 3D, don't expect it to hold up on wildly different depth ranges or extreme close-ups - it reads local depth gradients, and it'll only look convincing where those gradients are honest.
Inputs (0)
No inputs
Outputs (0)
No outputs