Difference between revisions of "Developer Resource"

From Virtual Reality, Augmented Reality Wiki
Jump to: navigation, search
(App Stores)
(Wrappers and Injectors)
Line 25: Line 25:
  
 
==Wrappers and Injectors==
 
==Wrappers and Injectors==
 +
[[Oculus Rift]] [[games]]/[[experiences]], or better said games/experiences 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 async 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?]
  
 
==Resources==
 
==Resources==

Revision as of 17:12, 18 May 2016

Information icon1.png This page is a stub, please expand it if you have more information.

SDKs

SDKs or Software Development Kits are used to build VR games and experiences. A game/experience can either implement OVR or OpenVR or both. This means that the game/experience has access to native functionality in it's corresponding runtime. SDKs do not handle asynchronous timewarp or reprojection, those are handled by the 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

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

Wrappers and Injectors

Oculus Rift games/experiences, or better said games/experiences compiled with the OVR dlls 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 rotation and 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 async 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?]

Resources

Oculus Sample Framework and Oculus Sample Framework for Unity 5[1] - Experimental sandbox for VR developers and designers.

3D models

References

  1. https://developer.oculus.com/blog/introducing-the-oculus-sample-framework-for-unity-5/