elvissteinjr / DesktopPlus

Advanced desktop access for OpenVR
GNU General Public License v3.0
454 stars 29 forks source link

[feature] more overlay adjustements #50

Open YPetremann opened 1 year ago

YPetremann commented 1 year ago

Context: i'm using a web app to make a vr smartwatch with some tool like clock, countdown timer, notification, chat, live achievement tracking, streaming status and music controls for now I use four curved overlays placed in circle just bellow the left controller which give me an inside out cylinder watch

I think these thing would be in some advanced mode to better control overlay rendering:

elvissteinjr commented 1 year ago

Hi, unless I'm misunderstanding, most of these are already possible?

backface visibility, opacity and brightness

Opacity and Brightness sliders exist. Am I missing something?

Backface visibility is at the mercy of SteamVR's overlay system. Short of rendering the entire view ourselves (which is not in scope and would bring other issues), it's not easily possible. Putting another overlay facing the other direction to act as a backface works... until you try to do it for a curved overlay where SteamVR does odd things with the rendering (such as the overlay flickering out and into existence depending on the view angle).

allow screen curvature to max (so it would form a inside out cylinder)

While the slider is limited to typically sane values, the allowed range of values on the Curvature setting is 0% to 100%. You can keep holding [+] to go past it or do manual input by right-clicking the slider.

One issue with high curvature values is that there's no proper z-ordering for the front and back appearing parts of the overlay, so the part that is behind is actually rendered on top of the portion that should be in front.

allow negative curvature (and to max it would form a classic cylinder)

SteamVR accepts negative values for curvature (or even more than 100%) and does something with it. It messes up the laser pointer input pretty bad though. Seems to be inverted at first glance, but then also appears to block input on other overlays when it shouldn't.

With this behavior it's not something I want to expose in the UI. If you absolutely don't need input, then you are still able to set this kind of curvature by hand in the config file and it will be used and stick as long as you don't change the curvature setting in the UI.

If you're not using the NewUI-Preview builds, note that -100 is treated as a placeholder for auto-curvature, so that particular value would not work there. I generally recommend using the NewUI branch nowadays, though, even if it's not feature complete yet.

Given the z-ordering and disappearing (probably eager culling not accounting for curvature) issues, I fear even with said features you probably already have the better working setup with the 4 quarter-circle overlays. But the options are mostly there if you want to try it yourself. On a related note, the current SteamVR Beta has some fresh overlay z-sorting issues on its own, so that should be avoided right if you stick overlays close together.

YPetremann commented 1 year ago

I'm using NewUI which I found confusing at first glance but does it's job

backface visibility, opacity and brightness

Opacity and Brightness sliders exist. Am I missing something?

I was asking about backface opacity and backface brightness

For the other things since I'm making a vr smartwatch I need interactivity Also I didn't know that out of bound value were accepted

One thing is that either I have a browser I bound to 4 Region overlays or I put a single Browser overlay to that page, I will look at the SteamVR Beta branch