Forum Discussion

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

Pre-distorted, layers, correctly time-warped?

If hating waffle, stick to bold text

Hi, I'll start by saying that

  1. I expect something like this gets asked a lot... but I couldn't find it.
  2. I know this feature is a tall order since it would surely be abused by some, and
  3. I appreciate the extended desktop mode being taken away and timewarping with distortion being mostly a black box, and I think it generally a good move.
But I would like us to move back the other way again, just a little bit.

So is it possible, or could it become possible, to send image frames or frame layers to the Rift or the GearVR that have been distorted already, while still taking advantage of the time-warp feature?

I have heard from a previous Carmack talk that it wasn't possible but that may be out of date. He named the loss of the time-warping feature as a reason why directly rendering with your own barrel distortion turned out to be "not such a big win after all". But there is no fundamental reason why this needs to be true.

If the SDK can be told whether the sent frame or layer has distortion at the time of sending, there is no reason why it can't correctly time-warp it in either case.

Obviously, there will always be a number of programmers trying to find alternative ways to rasterise than with triangles, and being allowed to take back some limited powers in the area of distortion would be great.

Thanks
Tom

3 Replies

  • I think this needs to be moved to a different forum category, as it does not deal with the Platform sdk, but the core sdk.
  • The problem is that time warp needs to know exactly how you've distorted your input image for it to be able to apply the correct amount of per-pixel LSR.  Right now barrel pre-distortion, chromatic correction and time warp are applied in a single pass.  There are ways you can do the whole thing yourself (including LSR) by using ovrLayerDirect (see https://forums.oculus.com/developer/discussion/26150/possible-to-disable-timewarp#latest), but that appears to be in the process of being deprecated.