DLSS 5 Temporal Depth Stabilizer
Stop framewise depth from strobing through your video
- depth
- motion_vectors
- depth
Run Depth Anything V2 over a clip frame by frame and you'll see the problem this node exists to fix. Each frame's depth estimate is good on its own, but the scale drifts and edges wobble between frames, so the sequence shimmers and pumps - and a temporal upscaler like DLSS, which leans on depth history, turns that flicker into visible artifacts. This node smooths it out the same way a video stabilizer smooths camera shake: it remembers the previous frame's depth and refuses to let the new estimate run wild.
It's the middle link in the pack's "lighter framewise" video path - Depth Anything V2 → this node → pipeline - and it's the difference between that path looking broken and looking fine. The pack's own Easy pipeline inserts it automatically whenever you feed it more than one frame, so if you've used the Easy node on video, you've already used this logic without seeing it.
How it works
Read the source and the recipe is elegant. For each frame it takes the previous stabilized depth, warps it into the current frame using the motion vectors (current-to-previous flow - the same convention RAFT and the Optical Flow node emit), then blends. The blend weight isn't blind: it computes a confidence from how well the warped previous depth agrees with the freshly estimated current depth, so where they match, history wins and the depth stays calm; where they disagree - a genuinely new surface - the current estimate wins.
The two inputs that matter
strength(default 0.7) - how aggressively previous depth is carried forward. Higher = smoother, but slower to react to real scene change.disocclusion_threshold(default 0.08) - the guard against stale depth. "Disocclusion" is the fancy term for regions that were hidden behind something and just became visible; there, warped history has nothing true to offer. This threshold decides how much fresh current-frame depth wins in those newly revealed areas. Raise it if you see trails behind moving objects; lower it if the depth gets noisy because it's trusting current estimates too much.
depth and motion_vectors are the two image inputs, and they must share a batch count - the node throws a mismatch error if they don't. The output is depth: a smoothed, temporally consistent version of your framewise depth, ready for the depth input on the Full Pipeline or Neural Rendering nodes.
When it's not the answer
It's worth being direct: this node is a patch on a framewise estimator, and the pack ships a better tool for video. Video Depth Anything (Temporal) runs the VDA-S model that reasons over 32-frame windows natively, producing temporally consistent depth without the stabilize-after-the-fact dance. The pack's own recommendation for new video projects is VDA-S plus RAFT, and this stabilizer becomes the fallback for when you want the lighter Depth Anything chain or VDA-S isn't available.
Where you do keep this node: you already have framewise depth, you're on the still-image workflow and just want motion robustness, or VDA-S's resolution ceiling is cramping your footage. One more tip from the troubleshooting doc: hard scene cuts defeat temporal stabilization of any kind. If a clip cuts to a new shot, reset the chain there rather than letting the stabilizer smear the last shot's depth across the new one.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| depth | IMAGE | — | |
| motion_vectors | IMAGE | — | |
| strength | FLOAT | 0.700–1 | — |
| disocclusion_threshold | FLOAT | 0.0800.001–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| depth | IMAGE | — |