Oculus SDK for Windows | Updated 2015-05-15

I have read and agree to the terms of the EULA, Terms of Use and Privacy Policy

  • Release Notes
  • Legal

Oculus PC SDK Beta

The Oculus SDK 0.6 introduces the compositor, a separate process for applying distortion and displaying scenes and other major changes.

There are four major changes to Oculus SDK 0.6:

  • The addition of the compositor service and texture sets.
  • The addition of layer support.
  • Removal of client-based rendering.
  • Simplification of the API.

The compositor service moves distortion rendering from the application process to the OVRServer process using texture sets that are shared between the two processes. A texture set is basically a swap chain, with buffers rotated to allow game rendering to proceed while the current frame is distorted and displayed.

Layer support allows multiple independent application render targets to be independently sent to the HMD. For example, you might render a heads-up display, background, and game space each in their own separate render target. Each render target is a layer, and the layers are combined by the compositor (rather than the application) right before distortion and display. Each layer may have a different size, resolution, and update rate.

The API simplification is a move towards the final API, which primarily removes support for application-based distortion rendering.

New Features

The following are major new features for the Oculus SDK and runtime:

  • Added the compositor service, which improves compatibility and support for simultaneous applications.
  • Added layer support, which increases flexibility and enables developers to tune settings based on the characteristics and requirements of each layer.
  • Significantly improved error handling and reporting.
  • Added a suite of new sample projects which demonstrate techniques and the new SDK features.
  • Removed application-side DirectX and OpenGL API shims, which results in improved runtime compatibility and reliability.
  • Simplified the API, as described below.
  • Changed Extended mode to use the compositor process. Rendering setup is now identical for extended and direct modes. The application no longer needs to know which mode is being used.
  • Extended mode can now support mirroring, which was previously only supported by Direct mode.
  • Simplified the timing interface and made it more robust by moving to a single function: ovrHmd_GetFrameTiming.
  • Fixed a number of bugs and reliability problems.

The following are major new features for Unity:

  • Disabled eye texture anti-aliasing when using deferred rendering. This fixes the blackscreen issue.
  • Eliminated the need for the DirectToRift.exe in Unity 4.6.3p2 and later.
  • Removed the hard dependency from the Oculus runtime. Apps now render in mono without tracking when VR isn't present.

API Changes

This release represents a major revision of the API. These changes significantly simplify the API while retaining essential functionality. Changes to the API include:

  • Removed support for application-based distortion rendering. Removed functions include ovrHmd_CreateDistortionMesh, ovrHmd_GetRenderScaleAndOffset, and so on. If you feel that you require application-based distortion rendering, please contact Oculus Developer Relations.
  • Introduced ovrSwapTextureSets, which are textures shared between the OVRServer process and the application process. Instead of using your own back buffers, applications must render VR scenes and layers to ovrSwapTextureSet textures. Texture sets are created with ovrHmd_CreateSwapTextureSetD3D11/
  • OpenGL and destroyed with ovrHmd_DestroySwapTextureSet.
  • ovrHmd_BeginFrame was removed and ovrHmd_EndFrame was replaced with ovrHmd_SubmitFrame.
  • Added a new layer API. A list of layer pointers is passed into ovrHmd_SubmitFrame.
  • Improved error reporting, including adding the ovrResult type. Some API functions were changed to return ovrResult. ovrHmd_GetLastError was replaced with ovr_GetLastErrorInfo.
  • Removed ovr_InitializeRenderingShim, as it is no longer necessary with the service-based compositor.
  • Removed some ovrHmdCaps flags, including ovrHmdCap_Present, ovrHmdCap_Available, ovrHmdCap_Captured, ovrHmdCap_ExtendDesktop, ovrHmdCap_NoMirrorToWindow, and ovrHmdCap_DisplayOff.
  • Removed ovrDistortionCaps. Some of this functionality is present in ovrLayerFlags. ovrHmdDesc no longer contains display device information, as the service-based compositor now handles the display device.
  • Simplified ovrFrameTiming to only return the DisplayMidpointSeconds prediction timing value. All other timing information is now available though the thread-safe ovrHmd_GetFrameTiming. The ovrHmd_BeginFrameTiming and EndFrameTiming functions were removed.
  • Removed the LatencyTest functions (e.g. ovrHmd_GetLatencyTestResult).
  • Removed the PerfLog functions (e.g. ovrHmd_StartPerfLog), as these are effectively replaced by ovrLogCallback (introduced in SDK 0.5).
  • Removed the health-and-safety-warning related functions (e.g. ovrHmd_GetHSWDisplayState). The HSW functionality is now handled automatically.
  • Removed support for automatic HMD mirroring. Applications can now create a mirror texture (e.g. with ovrHmd_CreateMirrorTextureD3D11 / ovrHmd_DestroyMirrorTexture) and manually display it in a desktop window instead. This gives developers flexibility to use the application window in a manner that best suits their needs, and removes the OpenGL problem with previous SDKs in which the application back-buffer limited the HMD render size.
  • Added ovrInitParams::ConnectionTimeoutMS, which allows the specification of a timeout for ovr_Initialize to successfully complete.
  • Removed ovrHmd_GetHmdPosePerEye and added ovr_CalcEyePoses.

Bug Fixes

The following are bugs fixed since 0.5:

  • HmdToEyeViewOffset provided the opposite of the expected result; it now properly returns a vector to each eye's position from the center.
  • If both the left and right views are rendered to the same texture, there is less "bleeding" between the two. Apps still need to keep a buffer zone between the two regions to prevent texture filtering from picking up data from the adjacent eye, but the buffer zone is much smaller than before. We recommend about 8 pixels, rather than the previously recommended 100 pixels. Because systems vary, feedback on this matter is appreciated.
  • Fixed a crash when switching between Direct and Extended Modes.
  • Fixed performance and judder issues in Extended Mode.

Known Issues

The following are known issues:

  • Switching from Extended Mode to Direct Mode while running Oculus World Demo causes sideways rendering.
  • Judder with Oculus Room Tiny Open GL examples in Windows 7.
  • The Oculus Configuration Utility can crash when the Demo Scene is repeatedly run.
  • Application usage of CreateDXGIFactory can result in reduced performance; applications should use CreateDXGIFactory1 instead. Support for CreateDXGIFactory is deprecated in this release and will be removed in a future release.
  • For Windows 7 in Extended Mode, any monitors connected to the computer go black when the headset is on and return to normal operation when the headset is removed.
  • For Windows 7 in Extended Mode, if the headset is placed above the monitor(s), all displays might go black. The workaround is to place the headset to the right or left of the monitor(s).
  • PC SDK applications will crash if the OVR service is not running.

Oculus VR, LLC Software Development Kit License Agreement

Copyright ©  Oculus VR, LLC All rights reserved.

The text of this may be found at: https://developer.oculus.com/licenses/pc-3.2/

Human-Readable Summary*:

You are Free to:

Use, modify, and distribute the Oculus VR Rift SDK in source and binary form with your applications/software.

With the Following Restrictions:

  • You can only distribute or re-distribute the source code to LibOVR in whole, not in part.
  • Modifications to the Oculus VR Rift SDK in source or binary form must be shared with Oculus VR.
  • If your applications cause health and safety issues, you may lose your right to use the Oculus VR Rift SDK, including LibOVR.
  • The Oculus VR Rift SDK may not be used to interface with unapproved commercial virtual reality mobile or non-mobile products or hardware.

* This human-readable Summary is not a license. It is simply a convenient reference for understanding the full Oculus VR Rift SDK License Agreement. The Summary is written as a user-friendly interface to the full Oculus VR Rift SDK License below. This Summary itself has no legal value, and its contents do not appear in the actual license.

Full-length Legal Copy:

1. Subject to the terms and conditions of this License Agreement (the “License”), Oculus VR, LLC (“Oculus VR”) hereby grants to you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, sublicenseable copyright license to use, reproduce, redistribute (subject to restrictions below), modify, and improve the software contained in this Oculus VR Rift Software Development Kit (“RIFT SDK”), including, but not limited to, the samples, headers, LibOVR headers, and LibOVR source. This license is subject to the following terms and conditions:

1.1. This license includes the non-exclusive license and right to use (i) the RIFT SDK to make applications, content, games and demos (collectively and generally referred to as “Developer Content”) that run on the Oculus VR approved mobile hardware and software products (“Oculus Approved Rift Products”) and which may incorporate the RIFT SDK in whole or in part in binary or object code; and (ii) to use the RIFT SDK to create derivative works of the RIFT SDK itself (“RIFT SDK Derivatives”), whether in source, binary, or object form, in whole or in part, including third party software unless otherwise noted.

1.2. RIFT SDK Derivatives are further defined as source, binary or object code derived exclusively from the RIFT SDK by you; provided, however, that RIFT SDK Derivatives do not include the Developer Content (engines, utilities, applications, content, games or demos) which may be developed using the RIFT SDK. By way of example a mobile application or game or demo that is developed using the RIFT SDK would not be a RIFT SDK Derivative , nor would a utility or tool set in a pre-existing game engine that is adapted to work with the RIFT SDK be a RIFT SDK Derivative. By way of example, but not limitation, a RIFT SDK Derivative is or would be: either (i) an adaptation of a utility or piece of code from the RIFT SDK to improve efficiency; or (ii) an addition of code or improvement to the RIFT SDK that adds functionality.

1.3 For the sake of clarification when you use the RIFT SDK (including RIFT SDK Derivatives) in or with Developer Content, you retain all rights to your Developer Content, and you have no obligations to share or license Developer Content (including your source and object code) to Oculus VR or any third parties; provided, however, Oculus VR retains all rights to the RIFT SDK and the RIFT SDK Derivatives that may be incorporated into your Developer Content.

1.4 You agree to and you will use the Flash Screen Warning and the Health and Safety Warnings (collectively the “Oculus Warnings”) and the Oculus VR health and safety protocols found in the Oculus Best Practices Guide (“Oculus H&S Protocols”),and your use of the Oculus Warnings and the Oculus end user license agreement (“Oculus EULA”) with your Developer Content as provided for in the Oculus Developer Center, all of which can be found at the following link: https://developer.oculus.com/documentation/.

2. You, the recipient and user of the RIFT SDK, hereby agree and accept that Oculus VR shall own all right, title and interest to the intellectual property rights, including, but not limited to copyright, trademark and patent rights, to any RIFT SDK Derivatives that you may create, and you hereby assign any and all such rights to such RIFT SDK Derivatives to Oculus VR, subject to the following.

2.1 We hereby grant to you the a fully paid up, no-charge, royalty-free, world-wide, in perpetuity, non-exclusive right and license back to use these RIFT SDK Derivatives solely in conjunction with the RIFT SDK (or any components of the RIFT SDK) and/or Developer Content on Oculus Rift Products as set forth herein.

2.2 Furthermore, for the sake of clarification, Oculus VR and its assignees and licensees shall be free to use such RIFT SDK Derivatives without any approval from you and without compensation or attribution to you.

2.3 You also agree upon Oculus VR’s request to provide the source and binary code of any RIFT SDK Derivatives to Oculus VR. FAILURE TO COMPLY WITH THIS REQUEST IS THE BASIS FOR AUTOMATIC TERMINATION OF THIS LICENSE BY OCULUS VR.

3. Subject to the terms and conditions of this License, your license to redistribute and sublicense the RIFT SDK and RIFT SDK Derivatives is also expressly made subject to the following conditions:

3.1. You may sublicense and redistribute the source, binary, or object code of the RIFT SDK in whole or in part by itself for no charge or as part of a for charge piece of Developer Content; provided, however, you may only license, sublicense or redistribute the source, binary or object code of LibOVR in whole, and you may not license, sublicense or redistribute any portion or element of LibOVR separately or in part (in either source, binary or object form). If you license, sublicense or redistribute RIFT SDK Derivatives in and of themselves (not as a part of a piece of Developer Content) then you may only do that solely with and in conjunction with either the RIFT SDK or LibOVR. The RIFT SDK (including, but not limited to LibOVR),any RIFT SDK Derivatives, and any Developer Content may only be used with Oculus Approved Rift Products and may not be used, licensed, or sublicensed to interface with mobile software or hardware or other commercial headsets, mobile tablets or phones that are not authorized and approved by Oculus VR;

3.2. You must include with all such redistributed or sublicensed RIFT SDK or RIFT SDK Derivatives code the following copyright notice: “Copyright ©  Oculus VR, LLC. All rights reserved,” and include the list of conditions contained in this Section 3, including the full text of the disclaimer in Section 3.6 below;

3.3. Neither the name of Oculus VR, LLC nor the names of Oculus VR, LLC’s contributors, licensors, employees, or contractors, may be used to endorse or promote products derived from this RIFT SDK without specific prior written permission of Oculus VR, LLC;

3.4. You must give any other recipients of the RIFT SDK or any elements thereof, including LibOVR or RIFT SDK Derivatives, a copy of this License as such recipients, licensees or sublicensees may only use the RIFT SDK or any RIFT SDK Derivatives or any elements thereof subject to the terms of this License and such recipients, licensees or sublicensees agreement and acceptance of this License with Oculus VR (which will convey all rights to the recipients’ or licensees’ or sublicensees’ RIFT SDK Derivatives to Oculus VR), and you must cause any modified files to carry prominent notices stating that you changed the files;

3.5. If the RIFT SDK or a specific element thereof such as LibOVR includes a “LICENSE” text file as part of its distribution (the “License Notice”), then any RIFT SDK Derivatives that you distribute with the RIFT SDK in whole or in part must include a readable copy of such attribution notices as are contained within the applicable License Notice file (excluding those notices that do not pertain to any part of the RIFT SDK Derivatives), in at least one of the following places: within a License Notice text file distributed as part of the RIFT SDK Derivatives; within the source form or documentation, if provided along with the RIFT SDK Derivatives; or, within a display generated by the RIFT SDK Derivatives, if and wherever such third-party notices normally appear. You must also include in the License Notice file for all RIFT SDK Derivatives a copy of all notices (including any product liability or health and safety notices). The contents of the License Notice file are for informational purposes only and do not modify the License. You may add your own attribution notices within RIFT SDK Derivatives that you distribute, alongside or as an addendum to the License Notice text from the RIFT SDK or any part thereof, provided that such additional attribution notices cannot be construed as modifying the License.


4. This License does not grant permission to use the trade names, trademarks, service marks, or product names of Oculus VR, except as required for reasonable and customary use in describing the origin of the RIFT SDK, LibOVR, or any element thereof, and reproducing the content of the License Notice file. Oculus VR reserves all rights not expressly granted to you under this License.

5. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall Oculus VR or any contributor be liable to you or your licensees or sublicensees for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the RIFT SDK, LibOVR, any element thereof or any RIFT SDK Derivatives (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if you or such contributor has been advised of the possibility of such damages.

6. Your acceptance of the terms and conditions of this License in and of itself and for all Developer Content created as of , may be evidenced by any of the following: your usage of the RIFT SDK or any element thereof, acceptance of the click-through agreement, or opening the packaging of the CD-ROM containing the RIFT SDK or any element thereof, including LibOVR. As this License is updated for future releases of the RIFT SDK and/or LibOVR, you agree to abide by and meet all requirements of future updates of this License for those future RIFT SDK releases as evidenced by the same usage of the RIFT SDK or any element thereof and the future updates of this License will apply for that future Developer Content that may developed for or with that future RIFT SDK or any element thereof (i.e., you cannot sidestep out of the requirements of future updates of the License by developing against an older release of the RIFT SDK or License).

7. Oculus VR reserves the right to terminate this License and all your rights hereunder in the event you materially breach this License and fail to cure such breach within ten (10) business days after notice of breach from Oculus VR.

8. Furthermore, Oculus VR also reserves the right to cancel or terminate this License for any of the following reasons upon notice to you, subject to the appeal process set forth in Section 14 for a wrongful termination:

  1. Intellectual property infringement by you with Developer Content or RIFT SDK Derivatives created by you that is used with or by the RIFT SDK or any part thereof, or any of the RIFT SDK Derivatives;
  2. Developer Content that violates or infringes upon applicable law;
  3. Health and safety issues associated with your Developer Content;
  4. Failure to comply with or use properly the Oculus Warnings, Oculus H&S Protocols, or Oculus EULA;
  5. Use of the RIFT SDK, RIFT SDK Derivatives or LibOVR with a commercial product other than an Oculus Approved Product; and
  6. Failure to provide required notices or deliver source code and/or binary of RIFT SDK Derivatives as set forth above.

If you believe that you have been wrongfully terminated under this Section 8 with respect to material breach or with respect to these above conditions, you have the right to appeal the termination of this License under Section 14.

9. This License may be amended by Oculus VR on a prospective basis, and your usage of the License after such amendments or changes signifies your consent to and acceptance of any such amendments or changes on a going forward basis.

10. In the event any provision of this License is determined to be invalid, prohibited or unenforceable by a court or other body of competent jurisdiction, this License shall be construed as if such invalid, prohibited or unenforceable provision has been more narrowly drawn so as not to be invalid, prohibited or unenforceable.

11. You may not assign any rights or obligations under this License without the advance written consent of Oculus VR, which may be withheld in its sole discretion. Oculus VR may assign its rights or obligations under this License in its sole discretion.

12. Failure of either party at any time to enforce any of the provisions of this License will not be construed as a waiver of such provisions or in any way affect the validity of this License or parts thereof.

13. Your remedies under this License shall be limited to the right to collect money damages, if any, and you hereby waive your right to injunctive or other equitable relief.

14. This License shall be governed by the laws of the State of California, without giving effect to choice of law principles. All disputes relating to this License shall be resolved by binding non-appearance-based arbitration before a neutral arbitrator in Orange County, California. If your License has been terminated hereunder by Oculus, you may appeal your termination through this arbitration process on an expedited basis with an arbitration within thirty days of your giving Oculus VR notice of the appeal. The arbitration shall be conducted in accordance with the rules and procedures of JAMS then in effect, and the judgment of the arbitrator shall be final and capable of entry in any court of competent jurisdiction. You agree to submit to the personal jurisdiction of the courts located within Orange County, California in connection with any entrance of an arbitrator’s judgment or decision or any dispute with respect to the arbitration process or procedure or Oculus VR’s exercise of its equitable rights or remedies.