Motion vector flag `NVSDK_NGX_DLSS_Feature_Flags_MVJittered` seems to work abnormally

The description of NVSDK_NGX_DLSS_Feature_Flags_MVJittered in programming guide is as below,

.
In my understanding, it need to be set if the motion vectors calculated by using jittered clip position.

However, I get a shaking output if enable this flag. On the contrary, I get a normal output.

I try to figure out what the flag does in DLSS official demo. I found the demo does not setup this flag and excludes
jitter from motion vector in “motion_vectors.hlsli” as following:

float2 GetMotionVector(float2 svPosition, float3 prevWorldPos, PlanarViewConstants view, PlanarViewConstants viewPrev)
{
    float4 clipPos = mul(float4(prevWorldPos, 1), viewPrev.matWorldToClip);
    if (clipPos.w <= 0)
        return 0;

    clipPos.xyz /= clipPos.w;
    float2 prevWindowPos = clipPos.xy * viewPrev.clipToWindowScale + viewPrev.clipToWindowBias;

    return prevWindowPos - svPosition + (view.pixelOffset - viewPrev.pixelOffset);
}

However, I found view.pixelOffset and viewPrev.pixelOffset are always same during my debugging, which means the codes of excluding jitter from motion vectors do nothing. And I enable NVSDK_NGX_DLSS_Feature_Flags_MVJittered in demo, which results in a shaking output.

Here is some information:

  • OS: WIN11, 23H2
  • Driver: GeForce Game Ready 555.85
  • DLSS 3.7
1 Like

I realized that I was mistaken. In my code, the motion vector I calculated does not include jitter, so there is no issue with it.