OpenVR SDK 1.0.16

SteamVR Input (IVRInput/IVRDriverInput):

* Added motion range parameter to UpdateSkeletonComponent in IVRDriverInput.  This allows the driver to specify which range of motion set the given transforms are for, with controller or without controller
* Added boneCount member InputSkeletalActionData struct.  This lets users know how many bones are in the target skeleton by calling GetSkeletalActionData.  
* Added GetSkeletalBoneData as a separate call to get the bone transforms.  User code should now call GetSkeletalActionData first to determine if the action is active, and if so then call GetSkeletalBoneData to retrieve the transforms.  
* Added an input example to the sample driver. This includes an input profile, localized strings, icons, etc.
* Added ulRestrictToDevice argument to GetDigitalActionData, GetAnalogActionData, GetSkeletalActionData, GetSkeletalBoneData, GetSkeletalBoneDataCompressed, and TriggerHapticVibration. This allows applications to use the same action for both hands and differentiate them when calling to fetch the actual data. To get these handles, pass "/user/hand/right" or "/user/hand/left" to IVRInput::GetInputSourceHandle.
* Added nPriority to VRActiveActionSet_t. This allows applications to control how multiple bindings from different actions sets block each other. If action set A and action set B both have something bound to the trigger, the action set with the larger priority number will be returned to the application and the action set with the smaller priority number will receive no input. If multiple action sets use the same priority number, the application will get inputs from all actions in those sets even if they're bound to the same input source.

IVRRenderModels:

* Added GetComponentStateForDevicePath, which allows applications to animate controller components while using the new input system. To get these handles, pass "/user/hand/right" or "/user/hand/left" to IVRInput::GetInputSourceHandle or use the devicePath field in the structure filled out by IVRInput::GetOriginTrackedDeviceInfo.

IVRSpatialAnchors:

* Add a new interface that lets clients request driver descriptors for physical locations.  These descriptors are opaque strings that are stored by the client until they want to recover that position for future use.  The driver can update the coordinates whenever it has better information (for example when the HMD gets physically closer to the original location).  The client should treat active anchors like object poses that could update at any time.  Drivers don't have to implement any special support for this, in which case the runtime will provide fallback descriptors which are no better or worse than just having the application record virtual coordinates.  As of this release, no drivers are providing special descriptors.  This interface is present for prototyping but is not recommended for production use at this time.  Further documentation is provided in the associated headers.

IVRVirtualDisplay:

* Added the ability for DisplayRedirect devices to disable mura correction in the compositor (set Prop_DriverRequestedMuraCorrectionMode_Int32 to EVRMuraCorrectionMode_NoCorrection).
* Added the ability for DisplayRedirect devices to specify parameters to use for mura feathering.  This is to allow DisplayRedirect devices that use the IVRVirtualDisplay interface to handle only a subset of mura correction in the middle of the display, while the compositor continues to correct the outer area.  Mura correction values are linearly interpolated to zero over the specified ranges in pixels; corners use the max value.

IVRCompositorPluginProvider:

* Initial support for loading SteamVR drivers in the compositor process.  Currently only supports IVRVirtualDisplay components in order to provide async reprojection support.

New texture submission formats for macOS 10.14:

 * macOS 10.14 now supports cross-process sharable MTLTexture objects. Applications on macOS 10.14 or higher should prefer submitting textures to the compositor using TextureType_Metal rather than TextureType_IOSurface.
 * TextureType_Metal textures of type MTLTextureType2D and MTLTextureType2DArray can be submitted to IVRCompositor::Submit. When submitting MTLTextureType2DArray textures, the compositor assumes layer 0 is the left eye texture (vr::EVREye::Eye_left) and layer 1 is the right eye texture (vr::EVREye::Eye_Right). Applications must still call IVRCompositor::Submit twice, once for each eye, when submitting MTLTextureType2DArray textures, and the two layers of the texture will only be utilized if the same MTLTexturetype2DArray texture is submitted to each call.

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4637165]
49 files changed
tree: 00f5f62279e89727ffcbc3ed74b0a217899d8513
  1. .gitattributes
  2. CMakeLists.txt
  3. LICENSE
  4. README.md
  5. Toolchain-clang.cmake
  6. bin/
  7. controller_callouts/
  8. headers/
  9. lib/
  10. samples/
  11. src/
README.md

OpenVR SDK

OpenVR is an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting. This repository is an SDK that contains the API and samples. The runtime is under SteamVR in Tools on Steam.

Documentation

Documentation for the API is available on the Github Wiki

More information on OpenVR and SteamVR can be found on http://steamvr.com