Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
Anonymous's avatar
Anonymous
6 years ago

Timewarp broken in 1.35.0 ?

Hi,
I currently have two games published on Steam since some months, recently people updated to 1.35 and complained "everything does not work any more", the camera/tracking becomes all jittery/erratic and looks like "watching through a wobbly pudding".

After re-compiling everything, upgrading the firmware/etc. I see exactly the same they see.

I manage to track down the problem and seems this happens when I enable, in my code, the Timewarp feature.

Now the difference with/without it, is minimal, visually "none", in code, little.

My code more or less does "about the same" that is doing in OculusRoomTiny with the differences :

1. I use the "waitframe" method
2. I use FSAA ( so I have some more texture to resolve in )

The almost only differences between timewarp/non timewarp are that when I call :

p = ovrMatrix4f_Projection(eyeRenderDesc[eyeIndex].Fov, zNear, zFar, ovrProjection_None);

there's also an

#ifdef DO_TIMEWARP
posTimewarpProjectionDesc = ovrTimewarpProjectionDesc_FromProjection(p, ovrProjection_None);

proj = Matrix4(p);
#endif

and a bit later on :

#ifndef DO_TIMEWARP
ovrLayerEyeFov ld = {};
ld.Header.Type = ovrLayerType_EyeFov;
ld.Header.Flags = 0;
#else
ovrLayerEyeFovDepth ld = {};
ld.Header.Type = ovrLayerType_EyeFovDepth;
ld.Header.Flags = 0;
ld.ProjectionDesc = posTimewarpProjectionDesc;
ld.SensorSampleTime = sensorSampleTime;

#endif

For the rest "the main cycle is the same", it was all working before this latest update now it doesn't.

Any suggestions what I should look at ?

Thanks in advance.

2 Replies

  • Anonymous's avatar
    Anonymous
    I am still getting well nuts trying to understand what's going on here, it was all working fine before.

    It seems "all goes bad in here" :

                {
                 ovrMatrix4f p = ovrMatrix4f_Projection(eyeRenderDesc[eyeIndex].Fov, zNear, zFar, ovrProjection_None);
                 posTimewarpProjectionDesc = ovrTimewarpProjectionDesc_FromProjection(p, ovrProjection_None);
    }

    if I leave posTimewarpProjectionDesc as = {} I suppose that's equivalent to say "there's no timewarp" so all goes ok.

    I even had a look and tried to replicate "locally" what ovrTimewarpProjectionDesc_FromProjection() does, that are some really simple calculations ending up in those :

    res.Projection22,res.Projection23,res.Projection32

    But it's all wrong, it's like those params are not what it expects or something else something goes wrong, the image seems all time to jitter and at some point even 'explodes' going in all sorts of things.

    I really need some help here.

    Cheers.