Forum Discussion
agent025
11 years agoHonored Guest
idea to improve image stability for low FPS
The simple idea to improve image stability for low FPS:
1) Enlarge texture for rendering (a little bit) if it is possible.
2) Use following rendering algorithm:
1. Get tracking state (Yaw, Pitch, Roll).
2. Render the scene to FOV texture(s) as usual (user’s application).
3. Get tracking state again (Yaw2, Pitch2, Roll2).
4. Calculate dYaw = Yaw2 - Yaw, dPitch = Pitch2 - Pitch, dRoll = Roll2 - Roll.
5. Calculate dX = D * tan( dYaw ), dY = D * tan( dPitch ), alpha = - dRoll (where D is FOV distance).
6. Use (dX, dY, alpha) for rendering part of FOV texture to Oculus screen or rotate FOV triangles by (dYaw, dPitch, dRoll).
For more details see this picture: http://imgur.com/smfGL7u
To my mind this simple idea can help to improve image stability for low FPS. Low FPS leads to lagging; rendered picture not corresponds to real head position after rendering scene to FOV texture. This algorithm required small changes in Oculus software.
1) Enlarge texture for rendering (a little bit) if it is possible.
2) Use following rendering algorithm:
1. Get tracking state (Yaw, Pitch, Roll).
2. Render the scene to FOV texture(s) as usual (user’s application).
3. Get tracking state again (Yaw2, Pitch2, Roll2).
4. Calculate dYaw = Yaw2 - Yaw, dPitch = Pitch2 - Pitch, dRoll = Roll2 - Roll.
5. Calculate dX = D * tan( dYaw ), dY = D * tan( dPitch ), alpha = - dRoll (where D is FOV distance).
6. Use (dX, dY, alpha) for rendering part of FOV texture to Oculus screen or rotate FOV triangles by (dYaw, dPitch, dRoll).
For more details see this picture: http://imgur.com/smfGL7u
To my mind this simple idea can help to improve image stability for low FPS. Low FPS leads to lagging; rendered picture not corresponds to real head position after rendering scene to FOV texture. This algorithm required small changes in Oculus software.
3 Replies
- agnuHonored GuestAFAIK async timewarp uses a more advanced version of this approach.
The system renders the image as fast as it can (can be 30fps or so), into an image buffer.
Asyncrhronously an other thread applies timewarp to the latest actually rendered image buffer, at 90hz, and draws it on the screen.
Note that the latter is very fast, and has a predictable calculation time. - agent025Honored GuestThanks for answer! Now I see "timewarp" works! But the cause of my first post was the fact, that my DK2 at the OculusUnityDemo shows very bad image. Head rotation leads to doubling the image at 30~45 FPS. And at the SDK "Oculus World Demo" everything good at 75 FPS. So I decided to write "idea to improve image stability for low FPS". Another Demo applications also give bad doubled image. My GPU is Radeon HD6770. Is doubled image at low FPS normal?
Such a picture I see at the Oculus DK2 when rotate my head http://imgur.com/2gLiZcI, but at the monitor everything is ok. - jhericoAdventurer
"agnu" wrote:
Note that the latter is very fast, and has a predictable calculation time.
Predictable cost, but not time. When the GPU is mostly idle, it will have a predictable time, but when the GPU is under heavy load (which is when you most need async timewarp), then it's impossible to know how long it will take to complete the distortion. That's why we don't have async timewarp implemented in the PC SDK yet.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 8 months ago
- 1 year ago
- 1 month ago
- 10 months ago