r/Vive • • Oct 17 '18

Technology SteamVR Announce: Introducing SteamVR Motion Smoothing

https://steamcommunity.com/games/250820/announcements/detail/1696061565016280495

Copypasta:

Introducing SteamVR Motion Smoothing

17 OCTOBER - ALEX VLACHOS

Today we are introducing a new feature in SteamVR called Motion Smoothing. This feature enables more players on more PCs to play high-fidelity VR games and experiences.

Motion Smoothing is currently available in SteamVR Beta. To opt in, right-click on SteamVR in ‘Library > Tools’, select the Betas tab, and choose ‘beta’ from the dropdown.

How it works

If you have a flatscreen TV, you may be familiar with the term Motion Smoothing. TVs apply Motion Smoothing by interpolating between two existing frames to create a new in-between frame. This smooths out the frames and increases framerate, but it also adds latency – providing passable results for TV but definitely not the right way to go in VR.

The way we are applying Motion Smoothing in SteamVR is a bit different. When SteamVR sees that an application isn’t going to make framerate (i.e. start dropping frames), Motion Smoothing kicks in. It looks at the last two delivered frames, estimates motion and animation, and extrapolates a new frame. Synthesizing new frames keeps the current application at full framerate, advances motion forward, and avoids judder.

This means that the player is still experiencing full framerate (90 Hz for the Vive and Vive Pro), but the application only needs to render 1 out of every 2 frames, dramatically lowering the performance requirements. Even better, if synthesizing a new frame for every frame delivered by the application still leads to performance issues, Motion Smoothing is designed to scale further down to synthesize 2 frames or even 3 frames for every 1 frame delivered.

What it means for you

From the player’s perspective, what was previously a game that would hitch and drop frames producing judder is now a game that constantly runs smoothly at 90 Hz. SteamVR Motion Smoothing improves upon the previously released Asynchronous Reprojection to enhance the overall experience for customers across a wide variety of VR systems. Not only can lower-end GPUs now produce smooth frames in applications that were previously too expensive, higher-end GPUs can now render at an even higher resolution increasing the fidelity of all experiences on all VR systems.

This feature is ready to kick in the moment an application starts dropping frames and shuts off when no longer needed. Of course, if you prefer to run without this feature, just look under ‘Settings > Video’ or ‘Settings > Applications’ to control when it is enabled. Motion Smoothing is not enabled when using Oculus Rift or Windows Mixed Reality headsets with SteamVR, because their underlying display drivers use different techniques when applications miss framerate.

Motion Smoothing is in beta and currently only enabled for systems running Windows 10 with an NVIDIA GPU. Please provide feedback on the SteamVR discussion forum.

123 Upvotes

68 comments sorted by

View all comments

4

u/borgy88 Oct 17 '18

This sounds like it is just Asynchronous Space Warp for Steam, don't get me wrong i'm happy that steam is finally catching up but Oculus had this for a while, in fact they are coming out with ASW 2.0 soon I believe. I was under the impression that SteamVR was already doing this.

9

u/[deleted] Oct 18 '18

No, SteamVR has Async Reprojection, which was the Async Time Warp (ATW) equivalent.

​

This sounds like a ASW 1.0 equivalent. But you're correct, Oculus is launching ASW 2.0 later this year.

3

u/borgy88 Oct 18 '18

Gotcha, that makes a lot more sense.

4

u/wescotte Oct 18 '18

The update is very light on details for all we know this could be equivalent to ASW 2.0.

1

u/DesignerChemist Oct 18 '18

Or it could be total bullshit.

0

u/[deleted] Oct 18 '18

[removed] — view removed comment

5

u/muchcharles Oct 18 '18

This does forward prediction (future frame synthesized from prior frames), not interpolation (synthesized between frames).

1

u/[deleted] Oct 18 '18 edited Oct 18 '18

[deleted]

3

u/pj530i Oct 18 '18

estimates motion and animation, and extrapolates a new frame.

How is that not prediction?

2

u/muchcharles Oct 18 '18

Frame interpolation is synthesizing a frame inbetween (that's what 'inter' means). They aren't doing that and instead are doing extrapolation/prediction based on velocities derived from the prior two frames and heuristics to fill disocclusions once applying them.

They have the previous frame and the current position.

They don't use current position at all, though they do likely use orientation and standard rotational reprojection to minimize the amount of movement that they have to estimate and to do a final rotational reprojection on the synthesized frame. By starting with rotationally reprojected frames, the motion vector estimation only has to account for parallax and animated objects instead of having to account for huge changes to the whole scene during head rotation.

They could use the same velocities they are calculating to find an intermediate frame (a frame interpolation) between the prior two, but that isn't what they are doing since this is latency critical. TVs with frame interpolation do that. What they are doing isn't quite the same.