Skip to main content
Inspiring
December 19, 2013

DirectX 11 tracking "inertia" in unity

After some experimentation with the unity intigration I've found that you get a strange "inertia effect" when moving your head when DirectX 11 is checked on in player options in Unity.

The effect was first reported to me by drash after playing "The Room". I narrowed it down to the DirectX 11 option and it was reported as fixed.

I also created a basic scene in Unity and tested it off and on. Same thing. Weird head lag with it on and smooth as silk with it off.

Not sure if this is a known issue. Searched the forums and didn't find anything.

This is fairly critical if confirmed. This effect contributes a great deal to the VR sickness epidemic being reported by many.
    This topic has been closed for replies.

    32 replies

    Up and Coming
    December 20, 2013
    "cybereality" wrote:
    One of the devs here said that it may be an issue of DX11 enabling triple-buffering or something like that.

    Apparently, triple-buffering is supposed to eliminate problems caused by double-buffering:
    "1. The frame being displayed - the front buffer.
    2. The frame to be displayed at the next vsync (one back buffer).
    3. The frame currently being rendered (the other back buffer).
    ... That three frame CPU queue can be avoided either in the game software (the easiest option is issuing and waiting for queries with the appropriate delay in between), or with driver settings (it's there on Nvidia drivers, not sure about AMD).
    ... D3D's "Triple-Buffering" is a render ahead queue that smoothes out the framerate but increases latency with every additional buffer. It causes the program to wait when the queue is full rather than continue rendering. ...

    It appears that you can discard stale buffers rather than rendering old data when triple buffering, but the main benefit is increased frame rate using multiple GPUs, although at the expense of increased latency.

    The solution being to find a way to disable such buffering... For example, DX11.2 adds "Direct3D low-latency presentation API":
    "
    Somebody at OculusVR should be able to figure this out, and make an improvement to the next SDK release...
    This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
    Inspiring
    December 21, 2013
    @Anticleric: Well it's on our radar now, but I doubt it's a high priority issue.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    Inspiring
    December 21, 2013
    "cybereality" wrote:
    @Anticleric: Well it's on our radar now, but I doubt it's a high priority issue.


    Fair enough.
    Thanks for looking into it.
    I just want to make things pretty.
    IRIS VR - TECHNOLUST - KERSER - BODY/MIND/CHANGE - QUANTUM CAPTURE - OCCUPIED VR
    December 28, 2013
    I'm glad I found this thread, seeing this as well... Very late update to head tracking at 60fps.
    I didn't really see it until I exported my exe from unity... full screen in unity's editor seems better.
    I really hope that it is a priority, I'm using directx11 only effects (fluidity & tcparticles) that are a core part of my game. Thanks for looking into this! :)
    New Participant
    January 3, 2014
    very interesting reading..

    I wonder if this could help g-sync


    http://www.nvidia.co.uk/object/nvidia-gsync-technology-oct18-2013-uk.html

    sounds like the a killer idea for rift support.

    your panel runs at the rate you are pumping out frames from the card, this seems to good to be true,
    January 3, 2014
    I'm more concerned that this won't get fixed, I was hoping to release some WIP playable demos but cannot unless I gimp it for DX9...

    CyberReality- I this on a "short list" or should I not expect the rift to be DX11 compatible? Makes a big difference to how I handle my FX and awesomeness ;) Thanks!
    Inspiring
    January 3, 2014
    @HeadTrip: I am not convinced this is a bug, but maybe just a case of Dx11 using different settings by default or something else that can be tweaked. I was told the following by one of our Unity engineers:

    Probably that DX11 is triple buffering. Increasing the prediction value by 10-20ms may help cover this (make sure that it doesn't get too high, otherwise it will look bad). Also, if there are any DX11 specific features that can be accessed in a panel (for NV or AMD), they should be checked out.


    I also did another test right now and Dx11 seems to be working OK. Not sure exactly what the problem is.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    January 3, 2014
    Thanks for the info! I tried changing the Prediction from 0.03 to 0.07, big improvement.
    I'm concerned that monkying around with the default prediction setting might cause unintended consequences, is this a value that's ok to tweak?

    Thanks!
    Inspiring
    January 4, 2014
    Should be safe to tweak as long as you don't over-do it.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    January 4, 2014
    Thanks :)