We assume that they detected some important problem and preferred to fix it before people came to download the version, but some users were very quick and got hold of it, publishing the complete list of changes. The most prominent features are:
- Inclusion of the Composer’s service and texture sets
- Inclusion of layer support
- Removing client-based rendering
- Simplification of the API
The Composer service transfers the distortion rendering from the application process to the OVRServer process using texture sets that are shared between both processes. A texture set is basically a swap chain, with buffers rotated to allow the game rendering to move on while the current frame is distorted and displayed. Layer support allows multiple application rendering targets to be sent independently to the HMD. For example, a front, a back, and a game space could each be rendered on their own separate rendering target. Each rendering target is a layer and the layers are combined by the composer (rather than by the application) before being distorted and displayed. Each layer can have different size, resolution and refresh rate. Lastly, simplifying the API mainly removes support for application-based rendering.
* Added Composer service, which improves compatibility and support for simultaneous applications.
* Added layer support, which increases flexibility and allows developers to fine-tune configurations based on the characteristics and requirements of each layer.
* Significantly improved error handling and reporting system
* Added a set of new sample projects showing techniques and the new features of the SDK
* Removed the application-side supplements of the DirectX and OpenGL APIs, which leads to better compatibility and reliability of the runtime.
* The API has been simplified, as explained above.
* Changed the Extended mode to use the composer process. The rendering settings are now identical in 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 and strengthened timing interface by moving it to a simple function: ovrHmd_GetFrameTiming
* Fixed a few bugs and reliability issues.
Important new features for Unity:
* Disabled eye texture antialiasing when using deferred rendering. This solves the problem of black screens.
* Eliminated the need for the DirecttoRift.exe in Unity 4.6.3p2 and later.
* Removed the hardware dependency of the Oculus runtime. Applications will now render in untracked mono when no VR viewer is present.
The API changes in this release represent a major overhaul of the API. These changes significantly simplify the API while maintaining essential functionality. Changes to the API include:
* Removed support for app-based distortion rendering. The removed features include ovrHmd_CreateDistortionMesh, ovrHmd_GetRenderScaleAndOffset, etc. If you think you need app-based distortion rendering, please contact Oculus Developer Relations.
* Added ovrSwapTextureSets, which are textures shared between the OVRServer process and the application process. Instead of using your own backup buffers, applications should render scenes in VR and layers to ovrSwapTextureSets textures. Texture sets are created with ovrHmd_CreateSwapTextureSetD3D11/OpenGL and destroyed with ovrHmd_DestroySwapTextureSet.
* ovrHmd_BeginFrame has been removed and ovrHmd_EndFrame has been replaced by ovrHmd_SubmitFrame.
• A new API layer has been added. A list of layer pointers is passed to ovrHmd_SubmitFrame.
* Improved bug reports, including adding the ovrResult type. Some API functions have been changed to return ovrResult. ovrHmd_GetLastError has been changed to ovr_GetLastErrorInfo.
* Removed ovr_InitializeRenderingShim as it is not needed with service based composer.
* Removed some ovrHmdCaps flags, including ovrHmdCap_Present, ovrHmdCap_Available, ovrHmdCap_Captured, ovrHmdCap_ExtendDesktop, ovrHmdCap_NoMirrorToWindow, and ovrHmdCap_DisplayOff.
* Removed ovrDistortionCaps. Part of its functionality is present in ovrLayerFlags.
* ovrHmdDesc no longer contains display device information, as the composer service now handles the display device.
* Simplified ovrFrameTiming to only return the timing prediction value of DisplayMidpointSeconds. The rest of the timing information is now available through the secure ovrHmd_GetFrameTiming thread. The ovrHmd_BeginFrameTiming and EndFrameTiming functions have been removed.
* Removed LatencyTest functions (e.g. ovrHmd_GetLatencyTestResult).
* Removed PerfLog functions (e.g. ovrHmd_StartPerfLog), as they were replaced by ovrLogCallback (introduced in SDK 0.5).
* Removed the functions related to the Health and Safety warning (e.g. ovrHmd_GetHSWDisplayState). The warning functionality is now handled automatically.
* Removed support for automatic mirroring of the HMD. Instead, the application can now create a mirror texture (e.g. with ovrHmd_CreateMirrorTextureD3D11 / ovrHmd_DestroyMirrorTexture) and manually display it in a desktop window. This gives developers flexibility to use the application window in the way that best suits their needs, and eliminates the problem with OpenGL from previous SDKs, in which the application back-buffer limited the size of the HMD render
* Added ovrInitParams::ConnectionTimeoutMS, which allows specifying a time limit for ovr_Initialize to complete successfully.
* Removed ovrHmd_GetHmdPosePerEye and added ovr_CalcEyePoses.
* Fixed various bugs, including some performance and judder issues.