NVIDIA-RTX / NVIDIA-RTX/Streamline

DLSS Ray Reconstruction — persistent "swimming/flowing" artifact during camera motion (even at 16 SPP)

Open
#103 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ack need-info
Dominant language
C
Stars
1.2k
Forks
159
PR merge metrics
No merged PRs in 30d

Description

Environment

  • Streamline SDK 2.10.3
  • nvngx_dlssd 310.5.3
  • Custom DXR path tracer (Unity), 1–16 SPP
  • All DLSS-RR input buffers provided: color, depth, motion vectors, albedo, normal, roughness, specHitDist, diffuseHitDist, specularAlbedo, exposure

Problem Description

We are seeing a persistent "flowing/swimming" visual artifact on surfaces during camera motion — it appears as a liquid shimmer flowing across geometry.

Key observations:

  • Static camera: image converges cleanly, no artifact
  • Moving camera: flowing artifact appears on all surfaces
  • 16 SPP does NOT fix it — artifact is identical at 1, 2, 4, 8, and 16 SPP
  • Changing jitter pattern (Halton / R2 / random), jitter scale, DLSS preset, and preExposure has no effect
  • Forcing all surfaces to fully diffuse (specular = 0) reduces oscillation MSE by ~33%, but the artifact persists

Since increasing SPP to 16 does not help, we believe this is not a noise/variance issue, but rather a temporal reprojection or motion vector integration issue.


Questions

Q1. Motion vector jitter compensation
Should the motion vectors we provide to DLSS-RR include the sub-pixel jitter delta between the current and previous frame? Or does DLSS-RR handle jitter compensation internally using the jitter parameters passed via slSetConstants?

Q2. mvecScale sign and value
We currently pass mvecScale = {-screenWidth, -screenHeight} for Unity's normalized motion vectors (range [-1, 1] in NDC). Is this the correct scale and sign convention for Streamline DLSSD?

Q3. Depth buffer source
We are currently using the rasterized depth buffer. For a pure path tracer, should we instead provide a linear depth buffer derived from first-hit ray distance? Would a mismatch here cause the symptoms we're seeing?

Q4. Known issue in nvngx_dlssd 310.5.x?
We noticed that DLSS 4's transformer model reportedly addresses an "oily and runny unstable look." Is this the same artifact class we are experiencing? If so, is there a newer DLSSD DLL available that addresses this?

Q5. Diagnostic tools
Beyond the Streamline validation layer, are there any diagnostic flags, overlay modes, or buffer visualization tools that can help verify correct DLSS-RR buffer integration (e.g., inspect reprojected vs. current frame, confidence maps)?


What We Have Already Tried

Change Result
SPP: 1 → 16 No improvement
Jitter: Halton → R2 → random No improvement
Jitter scale adjustment No improvement
DLSS preset A–F No improvement
preExposure tuning No improvement
Specular → 0 (fully diffuse) MSE reduced ~33%, artifact still present

Any guidance would be greatly appreciated. Happy to provide additional buffer captures or repro details if helpful.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Streamline validation layer and the reported motion-vector, jitter, depth, and DLSS-RR buffer inputs. Compare buffer captures while the camera is static and moving, then determine which integration convention explains the artifact. Done means identifying a reproducible cause or confirming the issue needs maintainer guidance; no source files or tests are named.

Written by the indexing model from the issue text.

Assessment

Tech stack
unity
Domain
computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.