Forum Discussion

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

Will removal of Extended-Mode in 0.7 kill our Apps?

As you may know, in some cases it is not possible to have full control over the rendering stack. In other cases the Direct to HMD mode did not work at all because of bugs!!

For example with Virtual Desktop solutions capturing the desktop, the Extended Mode was the only solution to provide the functionality needed. There are even scenarios, as with dOculus VR Desktop, were you can overlay existing windowed Oculus Rift Applications with the partially transparent dOculus Window to bring a Virtual Desktop overlay to other Programs.

All this will probably not work without Extended-Mode! The removal of this vital compatibility fallback feature most probably will eliminate many of the various use cases, and make Oculus Rift a vanilla flavored peace of vendor lock in only capable to power some Unity or Unreal games.

Will we have to look for alternatives still providing support for extended desktops, or will this all still be fine with Direct Driver Mode?

8 Replies

  • owenwp's avatar
    owenwp
    Expert Protege
    The layering system is designed for just that use case. And as for bugs, that was true of extended mode as well, if anything it was far more error prone.
  • I had a look at the Layering system, and it will solve none of the problems described above. Looks like the Layering system is to be used from within one program, for programmers to stupid to do image compositing by themselves. This is ok, but does not solve the problem of compositing between multiple programs (what was possible with extended desktop), nor will it help you in situations, were it is not up to the programmer (of a plugin for example) to generate the OpenGL- or DX-SwapChain. It was no problem to distort the stereopicture and bring it to the rift with dragging a render-window to the corresponding extended desktop - now we are stuck at using an old SDK and preparing workarounds or transition to other devices once available.

    Have seen lots of such bigheaded product managers pretending to know what is best for their customers, such as removal of extended mode. None of those products really made it, maybe you should have stuck with OSX, I heard their users like it to be treated dependant toddlers - but this move you made is big shit IMO! One can only pray DesktopDuplication-API will work in your new created DirectDriverMode...

    PS: Just thougt f.e. how great it was to drag a recording of a Oculus Rift Youtube-Video to the extended Desktop and instantly watch it. I know there will be some extensions for some browsers to watch at the Rift - and I also know it will not work in many cases or just not be used, because this is way to cumbersome to be used by me. Still stunned about the stupidity of removing extended Desktop without warning or time for a transition to DirectDriverMode!
  • I agree with thewhiteambit, I ended up using extended more more then not because Direct to oculus was buggy as shit. And even if it wasn't there was tons of demos and applications that utilized the oculus as an extended display beautifully. Also, lets not forget the hundreds of triple A games that modified graphics drivers allowed us to play. I played through all of MAss effect 2, Batman Arkham knight, and Fallout 3 with the oculus. This won't be possible any more. I really think this is a corporate money grab more then it has anything to do with the tech. This is facebooks way of locking down the rift so they have full control over the market. Such a shame.
  • "thewhiteambit" wrote:
    Looks like the Layering system is to be used from within one program, for programmers to stupid to do image compositing by themselves.


    I guess OpenGL is for people too stupid to do their own triangle rasterization. You don't have to use more than one layer (i.e. you can do all the compositing yourself), but it can be convenient for people who want to do differing layers at different resolutions. Additionally, you can mark individual layers as using high quality distortion, which provides functionality that you simply don't have if you do the compositing yourself (since you don't have access to the distortion parameters).

    "thewhiteambit" wrote:
    Still stunned about the stupidity of removing extended Desktop without warning or time for a transition to DirectDriverMode!


    0.6 has been out for months, and removed the distinction between extended and direct mode from the point of view of the developer. 0.7 is almost exactly the same as 0.6 in terms of functionality.

    "SeanOCR" wrote:
    I agree with thewhiteambit, I ended up using extended more more then not because Direct to oculus was buggy as shit.


    Except that direct mode will improve over time as the big graphics vendors start supporting VR extensions in their drivers. The issues with extended mode on the other hand (losing windows on the Rift, etc) were fundamental to extended mode. You could *not* get rid of them.

    "SeanOCR" wrote:
    Also, lets not forget the hundreds of triple A games that modified graphics drivers allowed us to play.


    You can't complain about direct mode being buggy and then immediately talk about how you were using some hacked together driver interceptor to add VR functionality to a bunch of non-VR applications and expect to be taken seriously.

    Direct mode, or something like it has been inevitable since the Rift was originally released.
  • owenwp's avatar
    owenwp
    Expert Protege
    What a lot of this boils down to is that the OS window compositor has no business drawing things to an HMD directly. It is not designed for it at all, and it can only be made to work, mostly, using shims and hacks.

    Maybe one day Microsoft and Apple and Linus Torvalds will turn the HMD into a first class citizen and design the OS window compositors to handle distortion and head tracking and front buffer rendering, low latency driver paths directly. But that day is far in the future. Oculus needs to cut them out of the loop entirely until that day comes, and use their own custom video output, otherwise its absolutely impossible to control latency.

    To do otherwise is like passing head tracking data into the app using the mouse input API. Yes, that would make a thrown together VR port easy to make, but it would have all sorts of bad behavior because its not designed for that.
  • "jherico" wrote:
    "thewhiteambit" wrote:
    Looks like the Layering system is to be used from within one program, for programmers to stupid to do image compositing by themselves.


    I guess OpenGL is for people too stupid to do their own triangle rasterization.


    yes it is. it is not a shame, but it is...

    "jherico" wrote:
    You don't have to use more than one layer (i.e. you can do all the compositing yourself), but it can be convenient for people who want to do differing layers at different resolutions. Additionally, you can mark individual layers as using high quality distortion, which provides functionality that you simply don't have if you do the compositing yourself (since you don't have access to the distortion parameters).


    But using just one Layer will not solve the multi-Application compositing problem - you really need to read what the quote was about instead of quoting me and writing some random and completely unrelated "answer" about the buzzword "Layer" you just read. Beside that, what you wrote is wrong, I can do much better sub-pixel-exact distortion, since I am Raytracing directly without distortion-map. I was not complaining about the availability of a Layering-System, as explicitly stated - I just sayed it will not resolve any of the problem a previous post suggested usage of Layering-System for.

    "thewhiteambit" wrote:
    Still stunned about the stupidity of removing extended Desktop without warning or time for a transition to DirectDriverMode!


    "jherico" wrote:
    0.6 has been out for months, and removed the distinction between extended and direct mode from the point of view of the developer. 0.7 is almost exactly the same as 0.6 in terms of functionality.


    And this makes my saying invalid in what term? Removal of Extended-Mode was just announced with release of 0.7 afaik

    "SeanOCR" wrote:
    I agree with thewhiteambit, I ended up using extended more more then not because Direct to oculus was buggy as shit.


    "jherico" wrote:
    Except that direct mode will improve over time as the big graphics vendors start supporting VR extensions in their drivers. The issues with extended mode on the other hand (losing windows on the Rift, etc) were fundamental to extended mode. You could *not* get rid of them.


    So right now we have no possibly problematic but working fallback, and have to wait for the great future of direct mode, with all the problems I told so many times that are impossible to solve via DirectMode and work with extended Mode - one could guess you are a bit slow, still not accepting the simple truth you can only use DirectMode when you create the SwapChain yourself, and we had some very convenient way to solve that with extended mode without access to the SwapChain... *facepalm*

    "SeanOCR" wrote:
    Also, lets not forget the hundreds of triple A games that modified graphics drivers allowed us to play.


    "jherico" wrote:
    You can't complain about direct mode being buggy and then immediately talk about how you were using some hacked together driver interceptor to add VR functionality to a bunch of non-VR applications and expect to be taken seriously.

    Direct mode, or something like it has been inevitable since the Rift was originally released.


    Still no argument for removing extended Mode. Nobody wanted exclusive extended Mode, as you want exclusive DirectMode - we are just asking for an option, for all the problems the DirectMode will never solve and you will never understand with your fanboy-"everything is great"-attitude. Nobody was complaining about DirectMode being buggy, still funny how hard you try to misinterpret us. We were complaining about Extended-Mode being removed, and having DirectMode left as only alternative. AGAIN: The core problem is not DirectMode being buggy, the problem is having taken away the extended Mode and being left with only DirectMode.
  • owenwp's avatar
    owenwp
    Expert Protege
    If it is an option for developers, then end users will be forced to use it. That was the situation up to now: a large percentage of apps only worked with extended because that was easier to implement in a custom engine, so to use those you had to constantly switch back and forth, move your start menu around, set primary monitors, add command line arguments to set the output device, squint to read pop up messages with one eye, etc. Every app worked a little differently or not at all. Developer convenience is not worth user agony.

    And yes you did complain about it being buggy. Read your own OP, first paragraph, you even double-exclamation-marked it.
  • I sayed there were bugs in DirectMode, but didn't make it the center piece of argumentation - while people ignoring all the things impossible to do with DirectMode. Of course demos making useless usage of Extended Mode with no support for a DirectMode are not good. But sometimes this is necessary, since there are those situations were DirectMode does not work at all (i.e. you are not able to create the SwapChain by yourself). It will not raise user-convenience If those Programs are dropped... and if you think, what is the benefit of removing the extended Mode? It has the same effect, as a user has who never activates extended Mode by hand. You could have got that without removing extended Mode. And If extended Mode removal should just be a pain in the devass to support DirectMode (if possible at all), you normally declare that one release ahead and the developers will take care of it. And no, SDK 0.6 having made extended Mode and DirectMode dropped toghether, is no hint that the option to select extended Mode is to be dropped all over. Now I constantly have to switch between SDK 0.6 and 0.7 - big time pita!