Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
Atm my brother Dmitry is very busy on his new job/moving to another state and since we bought just one Vive HMD, ii can't really test it myself(steamVR won't work with oculus for sure). :(
If it does not work, try --steam_openvr=1 launch option.
Polynomial was developed on linux, so it won't take much time to patch it for VR support as well. We simply missed steamVR Linux beta release because of family and job stuff.
We simply have to wait until NVidia provides a function which lets you mark OpenGL memory as readable by Vulcan. They do already have a function that works in the other direction.
Some of the shaders use an OpenGL compatibility profile, that's not really supported on mesa, but it looks right with the MESA_GL_VERSION_OVERRIDE=4.5COMPAT MESA_GLSL_VERSION_OVERRIDE=450 variables to use a fake compatibility profile.
Next was the game window opening in fullscreen on the vive display (extended mode). Maybe you can set it to windowed by default in VR mode, especially since the window doesn't really show anything but some text by default.
It looks like motion controllers need to be enabled in the controller settings. There's only "First Test" available, which makes the Vive controllers appear and you can wave them around, but none of the buttons do anything.
Mouse and Keyboard controls in the game window work and so it can be seen that rendering seems to fully work too. I hope you don't have ancient header files and run into https://github.com/ValveSoftware/SteamVR-for-Linux/issues/35
I currently have my Vive disassembled because I'm working on a hardware modification (that I will share in due course if it works), so I can't test it properly.
re: controllers, I actually updated OpenVR api version to 1.0.9 in that beta, I don't know if that may have broken something.
I accidentally locked myself out from my github account for the day by trying to guess my password, I'll submit an issue sometime later.
I'll make a new build shortly. This bug is rather worrying because there is a lot of other structures lacking pack pragmas, and some pieces having pack pragma with alignment 8 (so it's not clear it's safe to just pack everything at 4). The reason I have to use C api is that under Windows, C++ API works only with Microsoft Visual C++ (they neglected to add call specifications that would make it cross compiler compatible).
Ah, got just a tiny taste of my personal hell, did you? :)
This is what I've tried to do to get around it, and I'm not even sure if it works: https://github.com/roothorick/WineOpenVR/blob/master/src/repacked_structs.h
re: your code, interesting, why in the world would they pack it at 4 under Linux when default is 8? Or does it pack at 4 by default under 32 bits and they made it 4 under 64 bits as well?
By the way, out of curiosity, how do you deal with visual studio's calling conventions in C++ api? It's kind of funny how this "open" API entirely lacks either specifications or an open source implementation, but since headers are on github every user thinks it's open source.
From what I can tell, packing was not originally specified for these, they found their mistake later, and explicitly specified the old packing so they wouldn't have similar unpleasant surprises in the future. Look at the blame on openvr.h, you can find where they added those pragmas which hints at what happened. I really don't understand why -- they're already not caring at all about ABI, doing their versioning thing, just change the packing, bump the ABI versions and call it a day. Well, in any case, we're stuck with it.
You want more fun? There's a handful of overlay-related structs that don't have explicit packing :) Here we go again!
Yeah, that was fun. Ultimately, GCC actually did most of the work. Surprisingly enough, it can cleanly mix the two if you set the right attributes (ms_abi / sysv_abi / thiscall etc).
It doesn't QUITE get it right though; it puts the this-pointer and the return value pointer (for returning a struct/class/etc) in the wrong order/registers/etc, requiring the hairy "ERP hack" explained in WOVR's README.
Bought just now as a thank you. ;)
Interesting. I had to do something like that to get leaderboards etc working back in the day. I didn't need returns until they actually added a C API (which I ended up using), presumably for unity bindings , so I didn't look into returns. Returns are also the reason I can't just use the OpenVR C++ headers on Windows.
Looking at your readme - here's another gotcha, not sure if you're aware of it or if OpenVR has overloads - MSVC re-orders overloaded members in backwards order in the vtable. I.e. all overloads had to be put in opposite order. Luckily overloads I had to deal with were all together. I don't know what MSVC does if there's something in-between overloads.
@EndeavourAccuracy Thanks / you're welcome!