Releases: ValveSoftware/openvr
v0.9.18
OpenVR SDK 0.9.18
General:
- Added VREvent_Compositor_ChaperoneBoundsShown and VREvent_Compositor_ChaperoneBoundsHidden, which are sent when the chaperone bounds become visible/hidden.
- Added VREvent_SeatedZeroPoseReset, which is sent whenever the user resets the seated zero pose in the dashboard or via the API.
IVROverlay:
- Added new overlay flag, VROverlayFlags_ShowTouchPadScrollWheel, to let you cause a scrollwheel to be draw on the active controller even if it isn't in scroll mode
IVRApplications:
- Added LaunchInternalProcess, which allows an application to switch which process is providing 3D frames for that application without showing any application transition UI.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3330105]
v0.9.17
OpenVR SDK 0.9.17:
General:
- Added events for application to temporarily hide and re-show render models (VREvent_HideRenderModels, VREvent_ShowRenderModels).
- Added VREvent_KeyboardDone which is sent when DONE button clicked on keyboard.
- There is a change to how the openvr.h manages talking to the openvr_api.dll. We now have inline functions that acquire the interface pointers so when you build you will get the correct interface pointer even if the underlying openvr_api.dll is newer than the one you built against. This will enable environments where multiple codebases need to coexist in the same process such as some game engines.
IVRApplications:
Compositor:
- Added new error code for detecting non-D3D11 class hardware (VRInitError_Compositor_D3D11HardwareRequired).
- New interface for individually getting last tracked device poses returned by WaitGetPoses (GetLastPoseForTrackedDeviceIndex).
- New API used to determine if the current app should render using lower resources (ShouldAppRenderWithLowResources). Typically this will return true when the dashboard is showing but other scenarios could result in this behavior also.
Settings:
- New speaker related settings (usingSpeakers, speakersForwardYawOffsetDegrees).
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3321024]
v0.9.16
OpenVR SDK 0.9.16:
Note: This update includes significant changes to the OpenVR driver interface to simplify driver development and support backward compatibility. Drivers will need to update to at least this version to continue to be supported.
General:
- Added VREvent_TrackedDeviceRoleChanged, which is sent when right/left handedness of a controller changes.
Settings:
- Added RemoveSection, which removes an entire section from the settings.
Render Models:
- Changed render model and texture loading to be asynchronous. LoadRenderModel has become LoadRenderModel_Async and LoadTexture has become LoadTexture_Async. Check the EVRRenderModelError returned by these functions to determine if the requested resource is loaded asynchronously.
- LoadTextureD3D11 has become LoadTextureD3D11_Async which loads a texture into a D3D11 resource asynchronously.
- Added VRComponentProperty_IsScrolled, which can be returned for render model components that are currently scrolling.
- Added RenderModel_ControllerMode_State_t to GetComponentState. This allows the caller to specify whether the component is scrolled and is used for devices sending scroll events to overlays. Pass NULL if you don't care about this.
Driver Interface:
- Removed TrackedDeviceDriverInfo_t. The information that used to be in this struct is now provided via properties. Added Prop_DeviceClass_Int32 for the one member of the struct that didn't already have a matching property.
- IServerDriverHost:: TrackedDeviceAdded now takes a serial number string. The driver will be called back to get specifics via properties.
- Prop_SerialNumber_String and Prop_DeviceClass_Int32 are now required for every tracked device driver.
- Added deviceIsConnected to DriverPose_t. When a connection to a device is lost the driver should send another pose with this bool set to false.
- Removed ITrackedDeviceServerDriver::GetId. This information is retrieved via Prop_SerialNumber_String now.
- Functions that aren't universal to all tracked devices have been moved onto driver components. These are retrieved with the GetComponent function.
- Display-related functions have moved to IVRDisplayComponent. This includes:
- GetWindowBounds
- IsDisplayOnDesktop
- IsDisplayRealDisplay
- GetRecommendedRenderTargetSize
- GetEyeOutputViewport
- GetProjectionRaw
- ComputeDistortion
- CreateSwapTextureSet
- DestroySwapTextureSet
- DestroyAllSwapTextureSets
- SubmitLayer
- Present
- Controller-related functions have been moved to IVRControllerComponent. This includes:
- GetControllerState
- TriggerHapticPulse
- Camera-related functions have moved onto IVRCameraComponent, but this interface is still in flux, so you should avoid implementing it in your driver.
- IServerDriverHost lost the TrackedDeviceInfoUpdated function. If property values change, the driver should call TrackedDevicePropertiesChanged instead.
- GetSettings on IServerDriverHost and IClientDriverHost now take an interface string. Pass the version of IVRSettings that your driver was compiled against.
- Interface versions were added to a few other places to support backward compatibility.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3299073]
v0.9.15
OpenVR SDK 0.9.15
General:
- Several event members have been changes from enum values to plain-old-data types to guarantee compatibility across compiler vendors.
IVRSystem:
- PollNextEvent() and PollNextEventWithPose() now take a parameter for the size in bytes of the VREvent object you are passing in
- The data member in VREvent_t is now variable length and at the end of the structure.
IVRApplications:
- Added VRApplicationProperty_LastLaunchTime_Uint64, which returns the last launch time for an application in seconds since January 1, 1970.
IVRCompositor:
- Compositor_FrameTiming is totally different. What should we tell people, Aaron?
IVROverlay:
- Added the ability to render an overlay wrapped around a component on a tracked controller when in the dashboard or compositor.
- k_EGamepadTextInputModeSubmit added for chat-style use of the keyboard where instead of a "Done" button there is a "Submit" button and it doesn't make the keyboard go away.
- PollNextOverlayEvent() now takes a parameter for the size in bytes of the VREvent object you are passing in
- For overlay applications there are now two new event types you can listen to, VREvent_Scroll and VREvent_TouchPadMove. These events are generated if the VROverlayFlags_SendVRScrollEvents or VROverlayFlags_SendVRTouchpadEvents flag is set on your overlay window.
IVRRenderModels:
- Added RenderModelHasComponent, which returns true if the named model has the named component.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3265813]
v0.9.14
OpenVR SDK Update 0.9.14:
- IVRSystem
- Added PerformanceTestEnableCapture(bool) for performance testing tools to toggle when frame timing data should be recorded.
- Added PerformanceTestReportFidelityLevelChange(int) for performance testing tools to report when they've changed fidelity settings.
- General
- Added present count field to Compositor_FrameTiming.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3205113]
v0.9.13
OpenVR SDK Update 0.9.13:
- IVRSystem
- Added new APIs GetTrackedDeviceIndexForControllerRole() and GetControllerRoleForTrackedDeviceIndex() to get the correct devices for the left and right hand controllers.
- IVRChaperone
- API GetBoundsColor has changed to also return pOutputCameraColor.
- IVROverlay
- Added GetTransformForOverlayCoordinates() to return the 3d space transform for a given 2d point in an overlay.
- Added SetKeyboardTransformAbsolute() to set the keyboard position in 3d space
- Added SetKeyboardPositionForOverlay() to set the keyboard position appropriate for an overlay
- IVRControlPanel removed
- Misc new types added
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3201751]
v0.9.12
OpenVR SDK Update 0.9.12:
- Renamed many enums to a more consistent naming scheme. Typedefs are in place to allow old code to continue building, but those will be removed at some point in the future.
- HmdError -> EVRInitError
- Hmd_Eye -> EVREye
- GraphicsAPIConvention -> EGraphicsAPIConvention
- HmdTrackingResult -> ETrackingResult
- TrackedDeviceClass -> ETrackedDeviceClass
- TrackingUniverseOrigin -> ETrackingUniverseOrigin
- TrackedDeviceProperty -> ETrackedDeviceProperty
- TrackedPropertyError -> ETrackedPropertyError
- VRSubmitFlags_t -> EVRSubmitFlags
- VRState_t -> EVRState
- CollisionBoundsStyle_t -> ECollisionBoundsStyle
- VROverlayError -> EVROverlayError
- VRFirmwareError -> EVRFirmwareError
- VRCompositorError -> EVRCompositorError
- Renamed all HmdError_* enum vales to VRInitError_* to match the new enum name.
- VR_GetStringForHmdError was renamed to VR_GetVRInitErrorAsEnglishDescription to match the new enum name and make it clear what this function actually does.
- VR_GetVRInitErrorAsSymbol was added. This returns the literal EVRInitError value name instead of a user-facing string. Use this to look up localized strings to display to users.
- IVRRenderModels
-
Introduced Component interface, which allows client applications to draw, label, or interact with tracked object components.
Components may define coordinate systems, renderable geometry, associations with button state, and supports button / axis dynamics.Example uses of the IVRRenderModels Component API
- Compositor controller rendering reflects live button/trackpad/trigger motion dynamics
- Client applications can query controller-agnostic render label "attachment points"
- Client applications can query controller-agnostic hand-pose
-
LoadRenderModel does not load textures automatically, instead an additional call to LoadTexture is required. This enables texture reuse across model components.
-
- Added new event VREvent_IpdChanged, which is sent when the physical IPD has changed on hardware that supports that. Because IVRSystem::GetEyeToHeadTransform is based on the user's IPD, applications which cache the matrix returned from that function will need to query it again. Applications that call GetEyeToHeadTransform each frame can safely ignore this event.
- Functions that are used by an application to create its own window have moved to IVRExtendedDisplay. Calls to get this interface will return NULL and error VRInitError_Init_NotSupportedWithCompositor if VR Compositor is already running. Applications will need to use the compositor in that case. The functions that were moved are:
- GetWindowBounds
- GetEyeOutputViewport
- GetDXGIOutputInfo
- IVRNotifications has been changed to support different types (transient and persistent) and styles of notifications. The notification system remains a work-in-progress and is not yet fully implemented.
- Changed several functions that take a texture pointer to take a Texture_t struct instead. This struct allows the caller to identify the API and color space of the source texture in addition to the texture itself.
- IVROverlay::SetOverlayGamma has been replaced with SetOverlayTextureColorSpace wich allows applications to specify that their texture is in linear or SRGB space.
- IVRCompositor::Submit may return the following two new errors now rather than silently failing:
- TextureUsesUnsupportedFormat
- SharedTexturesNotSupported (if your app does not use DXGI 1.1 or greater)
- IVRCompositor::GetLastError has been removed. Errors are reported in the log.
- IVRCompositor::Get/SetVSync has been removed.
- IVRCompositor::Get/SetGamma has been removed (specify color space when submitting textures now instead).
- Added IVRCompositor::GetLastPoses - returns the last set of poses returned by WaitGetPoses.
- Added new application type VRApplication_Background, which will not start SteamVR if it isn't already running and will not keep it running if it would otherwise shutdown.
- Added IVRSystem::AcknowledgeQuit_Exiting to allow an application to acknowledge an incoming Quit event. This extends the timout before vrserver kills the app from 5 seconds to 60 seconds.
- Added IVRSystem::AcknowledgeQuit_UserPrompt to allow an application to tell the system that the user should be prompted to save data before exiting. This will cause the dashboard to be shown with UI that prompts the user to cancel the quit/transition request or to quit the app anyway. All timeouts will be cancelled once this call is made to give the user a chance to respond.
- Quit events now have a bForced field (under event.data.process). If this is this field is true calls to AcknowledgeQuit_UserPrompt will be ignored and the app will be killed automatically after a timeout if it doesn't exit on its own.
- The concept of a "home application" has been removed from the API. No 3D application will be launched automatically when SteamVR starts.
- Chaperone data is automatically reloaded in all applications when VRServer receives VREvent_ChaperoneSettingsHaveChanged. It's no longer necessary to watch for this event in each application.
- IVRChaperoneSetup has been added to the API which includes access to Chaperone Bounds polygons.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3147743]
v0.9.11
OpenVR SDK 0.9.11
IVROverlay:
- Added the concept of gamepad focus to dashboard overlays. Only the overlay with gamepad focus should pay attention to Xinput or other gamepad events. These are supported by new events and these IVROverlay functions:
- GetGamepadFocusOverlay - Returns the overlay that currently has gamepad focus.
- SetGamepadFocusOverlay - Sets the overlay that currently has gamepad focus. The dashboard will do this automatically for the active overlay.
- SetOverlayNeighbor - Set the up/down/left/right relationship between two overlays.
- MoveGamepadFocusToNeighbor - Overlays should call this when the user would navigate off of that overlay. OpenVR will shift the focus to the neighbor in that direction if there is one.
IVRCompositor:
- Added PostPresentHandoff - Should be called immediately after Present, only if you can't call WaitGetPoses instead (e.g. due to not having a separate render thread).
- Added GetLastPoses - Returns the last set of poses that would normally have been gotten through calling WaitGetPoses.
IVRTrackedCamera:
- This is a work in progress API for forward facing cameras.
IVRChaperone:
- Added GetPlayAreaSize - Returns the size of the Play Area in X/Z dimensions.
- Renamed GetSoftBoundsInfo to GetPlayAreaRect - Returns 4 corners of Play Area centered around the Standing Center.
- Removed GetHardBoundsInfo
- Removed GetSeatedBoundsInfo
IVRChaperoneSetup:
- Added GetWorkingPlayAreaSize - Returns the size of the working Play Area in X/Z dimensions.
- Renamed GetWorkingSoftBoundsInfo to GetWorkingPlayAreaRect - Returns 4 corners of working Play Area centered around the Standing Center.
- Replaced SetWorkingSoftBoundsInfo with SetWorkingPlayAreaSize - Sets the X/Z dimensions of the working Play Area.
- Renamed GetWorkingHardBoundsInfo to GetWorkingCollisionBoundsInfo - Returns quads for the working Collision Bounds.
- Renamed SetWorkingHardBoundsInfo to SetWorkingCollisionBoundsInfo - Returns quads for the working Collision Bounds.
- Added GetLiveCollisionBoundsInfo - Returns quads for the current Collision Bounds (formerly known as Hard Bounds).
- Removed all TagPoses interfaces and functionality.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3047315]
v0.9.10
OpenVR SDK 0.9.10
- Split VREvent_SceneApplicationChanged into two events. SceneApplicationChanged will be sent when switching from one app drawing the 3D scene to another drawing the 3D scene. SceneFocusChanged will be sent when the process that is allowed to draw in 3D has changed.
- Added events to notify launchers when about ongoing application transitions.
- Added button IDs for DPad and A buttons that will be sent when the user presses on the trackpad while in the VR dashboard.
- Added new HmdError_ShuttingDown, with will be returned when a new application calls VR_Init while SteamVR is in the process of shutting down.
- Added new Application errors for when an application can't start because another application transition is already in progress.
- Added new IVRApplications methods that are intended for launchers, but may be of more general use:
- GetTransitionState() - returns what phase of the transition process the system is in
- GetStartingApplication() - returns the app key of the application that is starting up
- PerformApplicationPrelaunchCheck() - kicks off the application transition process and returns what kind of event the caller should wait for before starting its new application
- GetApplicationsTransitionStateNameFromEnum() - Turns the results of GetTransitionState() into a string for logging purposes
- Added more const to the settings strings to avoid compiler warnings on some platforms.
- Added IVRCompositor methods:
- ShowMirrorWindow/HideMirrorWindow - Shows or hides a window that displays the left undistorted eye that the user is seeing in the HMD
- CompositorDumpImages - Writes all textures that the compositor knows about (including overlays) to a "screenshots" folder in the root of the runtime
- GetFrameTimeRemaining - Returns the time left (in seconds) until the end of the current frame
- GetLastFrameRenderer - Returns the process ID of the process that rendered the most recent frame to the HMD. If the compositor is showing its grid, this function will return 0 even if another app has scene focus.
- Added preliminary support for controller-based keyboard input
- Use IVROverlay::ShowKeyboard() to show the keyboard.
- Currently only minimal mode is supported
- Listen for KeyboardCharInput events to receive key input while the keyboard is up. The cNewInput buffer will contain input.
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3016204]
v0.9.9
- Added events (VREvent_TrackedDeviceUserInteractionStarted and VREvent_TrackedDeviceUserInteractionEnded) and a new interface method (IVRSystem:: GetTrackedDeviceActivityLevel) to hint an application about whether a device is being held or worn by a user.
- Added events (VREvent_FocusEnter and VREvent_FocusLeave). These are sent to overlays with automatic mouse processing when the cursor moves onto or off of an overlay. Use them to clean up hover states in your overlay UI.
- Dashboard overlays will now be send pressed and unpressed events when they are the current overlay.
- Added IVRSystem::GetRawZeroPoseToStandingAbsoluteTrackingPose(), which allows an application to transform between standing and the raw coordinate system.
- Added method (IVRChaperone::SetSceneColor) to let the app provide a hint to the compositor about the scene color so it can pick reasonable bounds colors.
- Added methods to (GetBoundsColor, AreBoundsVisible, ForceBoundsVisible) to let applications query the current state of the bounds.
- IVRCompositor::Submit now takes a flag parameter that allows an application to submit images that have already been distorted.
- Added methods (SetSkyboxOverride and ClearSkyboxOverride) to IVRCompositor to allow applications to control the skybox that will be visible when the compositor draws. This is useful for when an application knows it is not going to render for a while (because it is loading a level or doing some other blocking action.)
[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 2961972]