Nodes/Atlas Camera/Atlas Depth Detail Enhance πŸ”¬
ComfyUI Node

Atlas Depth Detail Enhance πŸ”¬

Emboss real surface detail into a depth map without wrecking its scale

By mikejamesvfxΒ·Created 3 months agoΒ·Updated a day agoΒ· 1
Atlas Depth Detail Enhance πŸ”¬
  • depth
  • exclude_mask
  • depth
  • report
β—„strength0.35β–Ί
β—„detail_cutoff_px64β–Ί

Depth maps from monocular models are smooth. They nail the broad shape of a room or a street but flatten the brickwork, the foliage, the rock faces - all the high-frequency surface texture that makes a projected plate read as real. AtlasDepthDetailEnhance is the node that puts that texture back, by embossing a surface-normal map's fine shape onto the shared depth map.

The clever part is what it doesn't do: it doesn't just sharpen the depth, which would add fake detail and tilt the metric scale. It only imports detail above a frequency cutoff, leaving the long-wavelength metric base completely untouched. That's the difference between "better depth" and "the depth still means what it said it meant."

How it works

The mechanism, per the pack's catalog, is a classic signal-processing move: it takes the depth map's associated normal field, runs a Frankot-Chellappa integration (a standard way to reconstruct a surface from gradient-like data, done here as a pure-NumPy FFT), high-passes the result above detail_cutoff_px, and blends it into the log-depth multiplicatively, then median-renormalizes. Because the blend is multiplicative in log space and renormalized, it's scale-preserving by construction - the metric meaning of the map survives the emboss.

There's one important condition: this needs a depth map that carries normals. Depth Anything V2 doesn't provide them; MoGe does. So the natural graph is AtlasDepthMap with a MoGe backend (or AtlasMogeNormals decoupled onto your V2 depth) feeding this node. If the depth carries no normals, the node passes through softly and says so.

Inputs and outputs

Required: depth (an ATLAS_DEPTH_MAP). Then:

  • strength (0–1, default 0.35) - how much of the detail gets embossed in.
  • detail_cutoff_px (4–1024, default 64) - the wavelength cutoff. The tooltip's phrasing is the whole doctrine: wavelengths longer than this are discarded from the integrated surface - only finer detail is embossed, which is what keeps the metric scale untouchable. Lower = more surface texture imported, at the risk of importing noise.
  • exclude_mask - where the depth should stay untouched. The tooltip names the targets: sky, glass - anywhere normals are meaningless. Masking the sky is the standard move; a blurred sky region is the classic artifact otherwise.

Outputs: depth (the enhanced map, returned as a copy - input never mutated) and a report string that tells you whether the pass actually applied or soft-passed for lack of normals.

Where people get tripped up

  • Wiring a V2 depth straight in and getting nothing. If the input depth has no normals, you get a passthrough. Add a MoGe backend (or AtlasMogeNormals) upstream - that's the whole trick.
  • Excluding nothing. Without an exclude_mask for sky, the emboss treats a gradient sky as surface and you get noisy garbage where there's no real texture. The tooltip's advice is unambiguous: wire sky.
  • Cranking strength. It's a subtle-detail tool, not a "make it crunchy" button. Defaults first.

Install

In the atlas-camera pack:

cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git

Restart (or Manager β†’ "atlas-camera"). Requires the [neural] tier, and in practice a MoGe-capable install for the normals - so also [moge] per INSTALL.md if you're on MoGe. Keep the kornia <0.8.3 cap in mind (it protects LTXVideo from a known import break; pip install "kornia==0.8.2" if you hit it). New pack, no community folklore yet - trust the report string to tell you if the pass actually ran.

CategoryAtlas/03 Β· Depth

Inputs (4)

NameTypeDefaultDescription
depthATLAS_DEPTH_MAPβ€”
strengthoptFLOAT0.350–1β€”
detail_cutoff_pxoptINT644–1024Wavelengths longer than this (px) are discarded from the integrated surface β€” only finer detail is embossed, which is what keeps the metric scale untouchable.
exclude_maskoptMASK1 = leave this pixel's depth untouched (sky, glass β€” anywhere normals are meaningless).

Outputs (2)

NameTypeDescription
depthATLAS_DEPTH_MAPβ€”
reportSTRINGβ€”