Releases: ValveSoftware/openvr
v0.9.8
General:
- Added new event VREvent_SceneApplicationChanged. It is sent whenever the application drawing the 3D scene changes.
- VR_Init now takes an optional argument to specify application type. The types are Scene (an app drawing in 3D), Overlay (a dashboard overlay), and Other. The default is Scene.
- For Scene applications, VR_Init will now block until the current scene application exits.
- Added new error return code (HmdError_Init_InitCanceledByUser) from VR_Init when the user decides to not exit the current Scene.
- Only one Scene application is allowed to be blocking on VR_Init at a time. If a second Scene application tries VR_Init will return HmdError_Init_AnotherAppLaunching.
IVRCompositor:
- Only Scene applications are allowed to call WaitGetPoses or Submit. VRCompositorError_IsNotSceneApplication will be returned if a non-Scene application tries to call these functions.
IVROverlay:
- Exposed curve parameters for high-quality overlay.
IVRApplications:
- This new interface allows the following operations:
- Applications, installers, and distribution systems can register applications with the system.
- Launchers can enumerate the list of installed applications and information about those applications
- Launchers can start applications by key instead of needing to know the details of how to launch the application.
- Dashboard overlays can be marked to auto-launch at startup so they are always available.
- Scene applications can be set as the Home application so they start when the system does. The user can also access the home application at any time via the Home button on the dashboard.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 2918409]
v0.9.7
- Added new function VR_IsRuntimeInstalled() to openvr.h. It returns true if the VR runtime directory was found.
- Added EVREventType::EVREventType_VREvent_StatusUpdate to notify subscribers of the event that the OpenVR overall system entered a new status state. Possible states are defined by VRStatusState_t and stored in VREvent_status_t
- Added EVREventType::VREvent_ChaperoneUniverseHasChanged to notify when the universe ID of the chaperone system changed. This message is usually sent once, when the ID changes from 0 to the actual universe ID.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 2912031]
v0.9.6
Rearranged type declarations in the headers so they're in the right order.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 2879780]
v0.9.5
IVROverlay:
- Added GetOverlayKey and GetOverlayName which return the key or name of an overlay from its handle.
- Added GetOverlayImageData which returns the current raw image data from an overlay.
- Improved reliability of SetOverlayRaw and SetOverlayFromFile.
- Added VREvent_ImageLoaded, which is sent when SetOverlayRaw or SetOverlayFromFile finish updating the overlay texture.
- Added VROverlayError_UnableToLoadFile, which may be returned if SetOverlayFromFile fails.
- Added ShowDashboard, which will make the dashboard visible if a dashboard manager is present. We aren't shipping a dashboard manager quite yet, so this function currently does nothing.
IVRNotifications:
- This new interface allows applications to post notifications to the user. Details and documentation are coming soon.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 2877976]
SDK Update 0.9.4
Removed Microsoft C Runtime DLL dependency from openvr_api.dll. Applications should be able to use this with any C runtime and won't require that the VS2010 C runtime be installed.
SDK Update 0.9.3
General:
- Added accessors for all public OpenVR interfaces. These eliminate the need to call VR_GetGenericInterface and then cache a pointer to the result. The functions are:
- vr::IVRSystem *VRSystem()
- vr:: IVRChaperone*VRChaperone ()
- vr:: IVRCompositor*VRCompositor ()
- vr:: IVROverlay*VROverlay ()
- vr::IVRRenderModels *VRRenderModels()
- vr:: IVRControlPanel*VRControlPanel()
- Added VREvent_Quit to tell applications when they should exit. Applications that don�t exit will be killed after five seconds.
- Added VREvent_ProcessQuit to tell applications when another OpenVR process has exited.
C API:
- Added missing "VR_" prefixes.
- Added missing global entry points (VR_Init, VR_Shutdown, etc.).
IVRSystem:
- Added GetSortedTrackedDeviceIndicesOfClass helper function. Useful for determining left vs right controller, etc.
- Added properties to get battery and changing state for controllers. These are currently returning dummy values in the Lighthouse driver.
- Prop_DeviceIsWireless_Bool
- Prop_DeviceIsCharging_Bool
- Prop_DeviceBatteryPercentage_Float
- Prop_StatusDisplayTransform_Matrix34
IVRNotifications:
- Experimental version of Notifications is now in the SDK. There WILL be a breaking change to this API in a future SDK.
- Notifications API will enable creating Notification Sources that send alerts to users while they are in a VR experience.
IVRControlPanel:
- Added QuitProcess(), which tells another OpenVR process to quit. Pass in 0 to tell all OpenVR processes to quit. In the all case,
IVRCompositor:
- Compositor_FrameTiming now additionally reports the following values:
- m_flFrameIntervalMs
- m_flSceneRenderCpuMs
- m_flSceneRenderGpuMs
- m_flCompositorRenderCpuMs
- m_flCompositorRenderGpuMs
- m_flPresentCallCpuMs
- m_flRunningStartMs
- Removed IVRCompositor::SetGraphicsDevice. Applications pass in the type of a texture with each Submit call instead.
- Submit's TextureBounds no longer need to be vertically flipped for OpenGL textures.
IVROverlay:
- Renamed the �system overlay� to the Dashboard. Added CreateDashboardOverlay() to allow applications to create overlays that are intended to appear in the dashboard.
- Removed Set/GetOverlayVisibility. This used to be used to set an overlay as a system overlay.
- Added Set/GetOverlayColor. The overlay color (including alpha) is multiplied by the overlay�s output texture value.
- Applications that use IVROverlay no longer need to call IVRCompositor::SetGraphicsDevice(), but SetOverlayTexture takes a graphics API to identify what kind of texture is being passed in.
- SetOverlayTexture now takes a texture type. SetOverlayTextureBounds still needs to be flipped vertically for OpenGL textures.
IVRChaperone:
*Added ReloadInfo() for forcing reload of bounds data from .vrchap. This is automatically handled by VRMonitor and the Compositor system when the config file is modified.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 2865502]
0.9.2
General:
- Added openvr_driver.h. This is the API to write an OpenVR driver. It is still very much a work in progress. No backward compatibility is guaranteed for drivers using this interface. It may be useful for development, however. See the documentation for details.
- Added include guards around VR types in case openvr.h and openvr_driver.h end up included in the same file.
IVRSystem:
- Added properties to get information about connected wireless dongles.
- Added properties to determine if the HMD display extends the desktop.
- Both render model functions have moved to the new IVRRenderModel interface.
- HandleControllerOverlayInteractionAsMouse has moved to IVROverlay.
IVRCompositor
- Removed all overlay related functions. Use the new IVROverlay interface.
- Added the concept of 'scene focus'. Only the application with scene focus can render the 3D scene in the compositor.
- Focus goes to application that started rendering most recently.
- The old scene focus app will receive a VREvent_SceneFocusLost when it loses focus. When an app regains focus (because the application with focus exited) it receives a VREvent_SceneFocusGained.
- Applications can check for scene focus with the CanRenderScene method. Applications without scene focus should do little to no rendering work and allow the application with focus full access to the CPU and GPU.
- WaitGetPoses will now block for a while for the application that doesn't have focus and then return an error. If you want to avoid the blocking, call CanRenderScene in your render loop.
- Submit will now return an error if the current application doesn't have focus.
IVRRenderModel:
- Added functions to enumerate the list of available render models.
IVROverlay:
- This is a new interface in this SDK revision. It offers:
- Support for multiple overlays in the compositor
- The ability to attach an overlay to a controller or other tracked device
- Support for registering system overlays, which is what comes up when you hit the tiny black system button on the SteamVR controllers. See the helloworldoverlay sample for an example of how to implement one of these using Qt.
- See the documentation for more details.
OpenVR SDK Release
Made openvr_api.dylib a universal binary.
Initial OpenVR SDK Release
The API that used to be available in steamvr.h in the Steamworks SDK is now the OpenVR SDK. Support for the old API will be maintained indefinitely, but applications that need any of the new features will need to switch to the new SDK.
Several new interfaces were added and new methods were added to existing interfaces. See the API documentation for details.
Changes from the SteamVR interface in SteamWorks SDK 1.31 to OpenVR SDK 0.9.0 include:
- IHmd is now
IVRSystem
. - Added support for multiple tracked objects. Call
IVRSystem::GetTrackedDeviceClass
on numbers between 0 and k_unMaxTrackedDeviceCount to determine what kind of device is in each slot. The active HMD will always be at k_unHmdTrackedObject (aka 0) in the list. - Moved fetching of various values about HMDs and other tracked devices into properties. The TrackedDeviceProperty enum defines the available values. Call
IVRSystem::Get<type>TrackedDeviceProperty
to get the value for an object. - Added support for providing applications with models and textures for tracked devices. This allows applications to draw the actual devices being tracked. See
IVRSystem::LoadRenderModel
andIVRSystem::FreeRenderModel
for details. - Clarified and changed tracking prediction. The right value to pass to
IVRSystem::GetDeviceToAbsoluteTrackingPose
is typically ( - ) + . All three of those values are available as properties on the HMD. - Added origin to calls that return poses. This can be Seated, Standing, or Raw. In the first two cases all returned poses will be relative to that configured origin. Raw poses are in whatever tracking system the current driver provides.
- Renamed
IVRSystem::ZeroTracker
toIVRSystem::ResetSeatedZeroPose
. This function only applies to the seated origin and will have no effect on applications that use the standing origin. - Added angular velocity and velocity to the data returned with a tracked device’s pose.
- CAPI and C# bindings for OpenVR interfaces added to headers. The accompanying json can be used to generate bindings for other languages as well.
- Added
IVRSystem::PollNextEvent
to the API. This allows applications to receive events when devices are activated, deactivated, or updated. - Added new interface
IVRChaperone
to query chaperone hard and soft bounds. Use this to show the user where safe areas to walk are. IVRSystem::GetHiddenAreaMesh
. It returns the stencil mesh to use to minimize pixel rendering for the current HMD.- Removed GetIPD. Use the property Prop_UserIpdMeters_Float instead.
- Added
IVRCompositor
interface. This interface allows an application to use the VR Compositor to perform distortion mapping and manage the HMD window.