DLSS 5 Optical Flow Guide
Motion vectors for free — no model, no download
- images
- motion_vectors
DLSS's whole trick is temporal: it keeps a history of previous frames and uses motion to tell it where each pixel went, so it can reuse detail instead of re-guessing it. To do that it needs a motion field - a per-pixel map of "this pixel moved this far, this direction." In a game, the engine hands that over for free. Here, somebody has to compute it, and this node computes it with the cheapest tool that works: classic Lucas–Kanade optical flow on the CPU via OpenCV. No weights to download, no GPU required, no setup beyond having opencv-python installed, which the pack's own requirements.txt already pulls in.
That's the entire personality of this node. It's the low-fidelity, zero-cost option in a pack where the high-fidelity option (RAFT) needs a model download and CUDA. You trade accuracy for instant, anywhere availability.
How it encodes motion
Look at what comes out and you'll see why the pack's nodes can talk to each other. The output is an IMAGE where the R and G channels encode the X and Y displacement of every pixel, and 0.5 means zero motion. That convention is the pack's native language - RAFT uses it, the pipeline expects it, and the Temporal Depth Stabilizer decodes it when it warps previous depth forward. The first frame of a clip comes out all 0.5, because there's no previous frame to compare against yet.
The three knobs
pyramid_scale(default 0.5) - how much each pyramid level shrinks between iterations.levels(default 5) - the pyramid depth; more levels catch larger displacements.window_size(default 21) - the averaging window per pixel. Must be odd, and 5–51 is the allowed range.
These are the classic Farneback parameters, and the defaults are sensible. This is one of those nodes where fiddling mostly costs you time without changing the outcome much - the algorithm's real weakness isn't the settings, it's that it's a coarse approximation compared to a learned optical-flow network.
When it's the right call
The Easy pipeline puts this node to work in two scenarios, and you can copy that logic: still images (where motion is just "none") and fast previews where you want to sanity-check a look before committing to the slow RAFT path. If your clip has real motion, quick camera moves, or detail that matters, the RAFT Motion Guide node is the one you want - this node's flow will do, but "will do" is doing a lot of work in that sentence. Smearing or ghosting in your DLSS output that isn't caused by depth is usually this node's flow being too coarse for what the clip needs.
The single output, motion_vectors, wires into the motion_vectors input of the Super Resolution, Full Pipeline, or Neural Rendering nodes, and pairs with any depth source you like. Everything else is the shared pack story: it only becomes useful after the runtime is set up with DLSS Runtime Setup (One Click) and verified via DLSS 5 Runtime Status, and it only ever runs on Windows with an NVIDIA card - though this particular node would be the one part of the pack that isn't hardware-bound if the rest of the pipeline weren't.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| pyramid_scale | FLOAT | 0.500.1–0.9 | — |
| levels | INT | 51–8 | — |
| window_size | INT | 215–51 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| motion_vectors | IMAGE | — |