Jittering when using SpaceWarp

Hallo all,

i just implemented Application SpaceWarp in my standalone app for Meta Quest 3 and as expected, my fps increased.

However, when i overlook my Scene now, there is a noticeable jittering effect, especially in objects which are far away from the camera. These objects appear to be shifting back and forth rapidly. This is just a slight movement, but it is disturbing.

At first i thought it was because of my custom shaders, but even after switching all materials on large objects to the Universal Render Pipeline/Lit Shader, the problem persists. Z-Fighting shouldn’t be a problem, as the objects have some distance between them.

Is this a known problem? Are there any solutions for this?

Thanks in advance for any help!

Do you have render graph enabled? I think this is a requirement. Issue is that performance on Quest gets worse with render graph enabled, I submitted a bug about this which got accepted, but far no signs of fixing.

Thanks for your reply!
To my understanding, render graph is automatically enabled in URP? (I’m using Version 17.0.3)
I disabled the “Compatibility Mode” Checkbox in Project Settings → Graphics, so it should be working. Or am i missing something?
SpaceWarp itself is working just as expected, there’s just this small jittering.

yes, this should enable render graph.
spaecwarp was added sometime during Unity 6 lifecycle, are you on latest?
I did some small tests only, but went back to 2022 after finding the performance to be bad in render graph, so I cannot really tell whether I saw jittering stuff anywhere.
Spacewarp also needs motion vectors, not sure if there is a way to enable/disable those in Unity 6 URP.

I’m on Unity 6.0.35f1 (the Unity 6 version which is recommended by Unity Hub).
Motion vectors should be enabled with URP standard materials, which i use.

Hey guys, do you have a solution on this?
We’re using Unity 6.2 now and experiencing the same jittering. Thanks.

Hello!
Just wanted to propose a potential fix.
If you use Metas headset you don’t need to set the position/rotation each frame, doing this introduces stutters.

I.e. in SpaceWarpController.cs, uncomment the code that sets position/rotation.

 void Update()
    {
        // Update SpaceWarp with camera position and rotation
        // if it is enabled in Project Settings.
        // Note, Depending on the headset, SpaceWarp may not need
        // to be updated with the main camera’s current position
        // or rotation. Refer to the headset’s specifications to
        // determine if it’s required. If the headset *does not*
        // require SpaceWarp to be updated with the main camera's
        // current position and rotation, then comment out the
        // following code.
        if (m_SpaceWarpFeatureEnabled)
        {
            // SpaceWarpFeature.SetAppSpacePosition(transform.position);
            // SpaceWarpFeature.SetAppSpaceRotation(transform.rotation);
        }
    }

Hopefully this helps someone! I’ve spent the last three days on this hehe.

Well, I’m able to run the Application SpaceWarp but I noticed two things:

  1. It doesn’t seem to be working with Skinned Mesh Rendering, when I’m not moving the animations runs just fine, but If I’m moving then animations are jitter.
  2. The performance is not worthing it! If I can run my game at 90 hertz and 90 fps with some drops, turning AppSW on and running it at 120 hertz (with 60 fps) makes me have even more fps drops. So reducing from 90 fps to 60 fps is costing at least the same just to make AppSW working with motion vectors.

I’m currently using Unity 6.2, I’ve tried with native URP shaders and custom shaders, both ended up with same results.