Changes

Jump to: navigation, search

Developer Resource

6,366 bytes added, 11:42, 4 January 2017
no edit summary
{{stub}}
{{TOCRIGHT}}
==How to Get Started==
{{see also|How to Get Started in VR Development}}
{{:How to Get Started in VR Development}}
 
==SDKs==
[[SDKs]] or [[Software Development Kits]] are used to build [[VR apps]]. An [[app]] can either implement [[OVR]] or [[OpenVR]] or both. This means that the app has access to native functionality in it's corresponding runtime. '''SDKs do not handle [[asynchronous timewarp]] or [[reprojection]], those are handled by the runtime!'''
 
*'''[[OVR]]''' - Made by [[Oculus VR]] for the [[Oculus Rift]]. Current version (14th May 2016) is 1.3.1 and can access all features of the [[Oculus Runtime]].
 
*'''[[OpenVR]]''' - Made by [[Valve]] and supports [[Vive]] and [[Rift]] via the [[SteamVR Runtime]].
 
Sidenote to SDK's and [[Unity]] games: Unity 5.3 currently has optimizations for VR in their native mode. The native mode supports Rift, [[Gear VR]] and [[PSVR]], but not [[SteamVR]]. A game compiled with Unity 5.3 can use those optimizations with the [[Oculus SDK]] but not the [[OpenVR SDK]]. The OpenVR SDK has it's own optimizations, which may or may not result in similar performance. However, the upcoming Unity 5.4 will support SteamVR natively and performance should be more or less identical. Please note: this is Unity specific and other engines might have similar or different optimizations for some or all headsets.
 
==Runtimes==
[[Runtimes]] are
 
*'''[[Oculus Runtime]]''' is responsible for [[asynchronous timewarp]] and handles device detection, display, etc. It (the runtime service) needs to be running for [[Oculus Home]] to launch.
 
*'''[[SteamVR Runtime]]''' is responsible for [[reprojection]] and supports [[Rift]] and [[Vive]].
 
If you launch a game on Steam that supports [[Rift]] natively (meaning, it has been compiled against the [[Oculus SDK]]), you will get [[asynchronous timewarp]] and it will run exactly like the game from Oculus Home. It won't use the the [[SteamVR Runtime]], it will use the [[Oculus Runtime]]. Only downside is that launching the game is more difficult.
 
If you buy a game that is compiled against the [[OpenVR SDK]], then it can run on [[Vive]] and Rift. However, running on Rift uses both runtimes:
 
Rendered Image using the OpenVR SDK -> SteamVR Runtime -> Oculus Runtime -> Rift
 
The Oculus Runtime effectively thinks you are playing a game called "SteamVR", but the content of the "game" is actually the image that the SteamVR runtime got from the OpenVR compiled game. This seems to work rather well and personally I have not noticed any additional latency. In theory you would even get Asynchronous Timewarp, but that would only happen if SteamVR itself isn't responding in time. If an OpenVR game stalls completely, the SteamVR runtime will throw you back into the loading construct and continues to render at 90fps. Since the SteamVR runtime has this fail safe mechanism and all the Oculus Runtime sees is "SteamVR", it will most likely never trigger Asynchronous Timewarp.
 
==App Stores==
[[App Stores]] are distribution platforms for software.
 
*'''[[Oculus Home]]''' needs to be running for the [[Rift]] to work. By default only supports [[apps]] from the [[Oculus Store]] (checkbox in the settings of the 2d desktop client to enable other sources). It downloads [[games]] and runs them. It also handles the [[Universal Menu]] on the [[Xbox]] button.
 
*'''[[Steam]]/[[SteamVR]]''' technically does not need to run when launching [[OpenVR]] games, but highly recommended (room setup and config is pulled from there). Also handles overlay menu on the Xbox button, or when running on the Rift, it launches by pressing the select/start button in the Oculus Universal Menu.
 
===Example===
[[Project Cars]] on Steam supports both [[OpenVR]] and [[OVR]]. The Oculus Home version supports only OVR as of today.
 
#Project Cars on Home + Rift -> will run natively
#Project Cars on Steam + Vive -> will run natively
#Project Cars on Steam + Rift + launched as Rift app -> will run natively
#Project Cars on Home + Vive -> won't run
#Project Cars on Steam + Rift + launched as SteamVR app -> will run via SteamVR
 
==Wrappers and Injectors==
[[Oculus Rift]] [[apps]], or better said apps compiled with the [[OVR]] [[dll]]s do not render to the [[HMD]] directly. They render their images and send them to the [[runtime]]. The interface for that are the dlls. [[Wrappers]] replace the content of the dlls with functions that are named identically, but redirect the games rendered image to a different runtime. Equally, they provide the game with the [[rotational tracking|rotation]] and [[positional tracking|position]] data of the headset.
 
*[[ReVive]] replaces the content of the dlls with functions that communicate with the [[SteamVR Runtime]]. The game thinks it's connected to a [[Rift]], but it is not. The SteamVR runtime is rendering the game and supports [[reprojection]], but not [[asynchronous timewarp]] (remember, this is a feature of the [[Oculus Runtime]]).
 
All Oculus games distributed through [[Oculus Home]] implement an entitlement check. This means the game is asking Oculus Home if the user is allowed to play it. ReVive does not hack this entitlement check and games need to be downloaded/purchased via Oculus Home. Games need to be started through Home once or the Oculus Service needs to be restarted. Example of the entitlement check failing in [[Lucky's Tale]]: Instead of the main menu, ReVive users see a worm on a log showing you it's tongue.
 
Sidenote: technically one could even write a wrapper that routes [[OpenVR]] calls to the Oculus runtime directly, bypassing [[SteamVR]] altogether. But since SteamVR can do it already, there is little need for that
 
*[[LibOVRWrapper]] installs dlls into [[Windows]] that old Rift games need in order to communicate with the new runtime. It effectively translates old games to the new runtime. [unsure: Do these old games now also use timewarp or do they need to specifically request it via an sdk call?]
 
*LibOVRWrapper + ReVive allows you to run old Rift games on [[Vive]].
 
==Resources==
[[Oculus Sample Framework]] and [[Oculus Sample Framework for Unity 5]]<ref>https://developer.oculus.com/blog/introducing-the-oculus-sample-framework-for-unity-5/</ref> - Experimental sandbox for VR developers and designers.
{{see also|Resources Directory}}
{{:Resources Directory}}
==3D models==
* [https://www.yobi3d.com Yobi3D - 3D model search engine]: offers a 3D viewer to see search results in 3D. Also works with Cardboard.
 
==References==
<references />
15,794
edits

Navigation menu