Skip to content

Releases: ValveSoftware/openvr

v1.0.17

16 Oct 17:58
Compare
Choose a tag to compare

OpenVR SDK 1.0.17

IVRProperties:

  • Prop_CameraStreamFormat_Int32 - value from the openvr_driver.h ECameraVideoStreamFormat indicating the expected delivery format of the device
  • TrackedProp_IPCReadFailure

IVRTrackedCamera:

  • CameraVideoStreamFrameHeader_t:: ulFrameExposureTime - additional field which carries the time in absolute system ticks of when the frame exposure happened, and the time of the frames pose.
  • CVS_FORMAT_YUYV16 - new opener_driver.h ECameraVideoStreamFormat value indicating 16-bit YUYV raw image encoding

OpenVR C API:

  • Fixed cNewInput and rchRenderModelComponentName having an incorrect type

IVRCompositor FrameTiming:

  • Added frame prediction and throttling bits to reprojection flags. Use the macros VR_COMPOSITOR_ADDITIONAL_PREDICTED_FRAMES and VR_COMPOSITOR_NUMBER_OF_THROTTLED_FRAMES for easy access. These values can be used to provide a better job at updating game simulation time for rendered frames when unable to meet native refresh rate requirements.
  • Added m_nNumVSyncsReadyForUse for tracking how long each frame took to render.
  • Added m_nNumVSyncsToFirstView for tracking how many vsync intervals before a given frame was first viewed (i.e. scanned out). This may differ from NumVSyncsReadyForUse if the frame was predicted further ahead since frames will never be displayed earlier than the time they were predicted to.
  • See https://developer.valvesoftware.com/wiki/SteamVR/Frame_Timing for more details.

Driver API:

  • Added TrackingResult_Fallback_RotationOnly, which drivers can return if they have lost positional tracking but wish to still provide rotation-only tracking.

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4759625]

v1.0.16

27 Jul 19:21
Compare
Choose a tag to compare

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]

v1.0.15

15 May 00:01
Compare
Choose a tag to compare

OpenVR SDK 1.0.15

Added support for the new SteamVR Input system. Please see the documentation for details:

Added support for tracked devices to provide access to their raw inertial measurement unit (IMU) data stream. Please see the documentation for details:

The stream of IMU data in the form of vr::ImuSample_t structures is provided through a new way of sharing data between applications and drivers called IVRIOBuffers. For details, see the documentation:

A new section in the steamvr.vrsettings file supports tracked devices overriding the tracking of other devices. Please see the documentation for details:

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4505287]

v1.0.14

05 Apr 23:12
Compare
Choose a tag to compare

OpenVR SDK 1.0.14

Tracked Camera

  • Added property Prop_NumCameras_Int32 for drivers to specify the number of cameras a given headset provides.
  • Added property Prop_CameraFrameLayout_Int32 for drivers to specify the frame layout of images delivered (use provided EVRTrackedCameraFrameLayout values).

IVRVirtualDisplay

  • Added vsync mode, frame id, and vsync timing data to Present call.

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4455565]

v1.0.13

15 Feb 22:12
Compare
Choose a tag to compare

OpenVR SDK 1.0.13

General

  • Added VREvent_RoomViewShown and VREvent_RoomViewHidden. Indicates that the "room view" pass-through camera mode has been started or stopped by the user. An application or driver can use this to enable or disable other functionality.

IVROverlay

  • Added TextureType_DXGISharedHandle. This is used to submit a shared texture handle directly and avoid an extra copy on the resource. This texture type is current only supported for overlays on Windows.

Driver Interface

  • Added TrackedControllerRole_OptOut. Set a controller to this if you want that controller to be ignored for the purposes of right/left hand selection.
  • Added Prop_NeverTracked_Bool. Set that property to true on a device if you want to inform the system that the device is never going to have a valid pose. For instance, you might use this for an untracked gamepad.
  • Prop_DistortionMeshResolution_Int32. Set this property on an HMD device if you want the system to generate a distortion mesh with a different resolution than the default, which is an approximately 50x50 grid across the full texture which is then trimmed to the area within the hidden area mesh.
  • Added Prop_MinimumIpdStepMeters_Float. Set this to the minimum IPD change in meters that should cause the IPD UI to be shown.
  • IVRDriverDirectModeComponent.CreateSwapTextureSet added the ability to specify sample count.
  • IVRDriverDirectModeComponent.SubmitLayer

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4366099]

v1.0.12

09 Jan 19:35
Compare
Choose a tag to compare

OpenVR SDK 1.0.12

IVRSystem

  • Removed the concept of "input focus" and all the associated APIs.
  • Added more granular "system behavior" functions to allow applications to query whether or not they should modify their behavior based on the state of the system. The new function are:
  • IsInputAvailable() -- This will return true if the application is receiving input events. For instance, it will return false when the SteamVR dashboard is visible.
  • IsSteamVRDrawingControllers() -- This will return true if SteamVR is drawing the user's actual controllers for any reason. It will be true if the dashboard is visible or if the SteamVR keyboard is visible over the application.
  • ShouldApplicationPause() -- This will return true is applications should pause (where appropriate.) It generally indicates that the user's attention is being taken by something like the SteamVR dashboard. Multiplayer games and other applications where "pause" is unavailable can ignore this.
  • ShouldApplicationReduceRenderingWork() -- This will return true when SteamVR is using more GPU and CPU resources than normal. It is a hint to the application to reduce its own rendering workload. A common way of doing this is to submit smaller render targets per eye.
    IVRCompositor
  • Added ability to pass depth info for scene textures. Use VRTextureWithDepth_t (or VRTextureWithPoseAndDepth_t) and pass Submit_TextureWithDepth flag to Submit.

Driver API

  • Replaced the API that drivers use to report input (button, trackpad, joystick, etc.) state. See IVRDriverInput documentation] for more information: https://github.com/ValveSoftware/openvr/wiki/IVRDriverInput-Overview
  • Replaced the haptic API into drivers with an events. Drivers will receive an event of type VREvent_Input_HapticVibration which uses the hapticVibration member of the data until to specify parameters.
  • Prop_CameraToHeadTransforms_Matrix34_Array - HMD devices which support multiple cameras expose camera extrinsic information in this property as an array of 3x4 transforms, one for each camera sensor. It is suggested that new devices also choose one of their cameras as a �primary� and expose its extrinsics as Prop_CameraToHeadTransform_Matrix34 for backwards compatibility with applications designed to recognize a single camera sensor.
  • Prop_DriverIsDrawingControllers_Bool � Drivers should set this property if they are rendering controllers on top of the scene in their own compositor. This will hint the application to stop drawing them separately.
  • Prop_DriverRequestsApplicationPause_Bool � Drivers can set this to true in order to hint applications to pause their game (e.g. when bringing up a custom dashboard).
  • Prop_DriverRequestsReducedRendering_Bool � Drivers can set this to true in order to hint applications to reduce rendering (e.g. when bringing up a custom dashboard).

IVROverlay

  • Removed HandleControllerOverlayInteractionAsMouse. Overlay applications should use the mouse overlay input method instead.

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4305765]

v1.0.11

05 Dec 23:27
Compare
Choose a tag to compare

OpenVR SDK 1.0.11

General:

  • k_unMaxTrackedDeviceCount is now 64 to support larger numbers of trackers.

macOS:

  • resolves memory leaks with caller/callee MRC/ARC mismatches - consider re-integrating if you bundle or build libopenvr_api from source

IVRCompositor:

  • extend SetExplicitTimingMode() with an extra mode to allow the application to instruct the runtime to never implicitly call PostPresentHandoff() instead of relying on sequencing of other calls to decide if it should.

Driver Interface:

  • Added several new driver properties to support better status UI layout and device-specific default idle icons for custom headset and tracked controller drivers:
  • Prop_ExpectedTrackingReferenceCount_Int32 - specifies the expected number of tracking sensors or basestations to reserve UI space for, though it can later offer more or fewer actual tracking reference devices.
  • Prop_ExpectedControllerCount_Int32 - specifics the expected number of tracked controllers to reserve UI space for, though it can later offer more or fewer actual tracked controllers.
  • Prop_NamedIconPathControllerLeftDeviceOff_String - specifies the placeholder inactive icon for the expected "left" controller when no controller has yet been found or activated.
  • Prop_NamedIconPathControllerRightDeviceOff_String - specifies the placeholder inactive icon for the expected "right" controller when no controller has yet been found or activated.
  • Prop_NamedIconPathTrackingReferenceDeviceOff_String -specifies the placeholder inactive icon for the expected tracking reference sensor/base when no tracking references have yet been found or activated.

IVRDriverDirectModeComponent:

  • Added separate PostPresent call which can be implemented to allow Present to return early after having called AcquiredSync on the provided syncTexture to unblock the compositor from continuing its work. Added GetFrameTiming to allow DriverDirectMode implementations to return additional timing information that only the driver's compositor knows about.
  • Added new property Prop_DoNotApplyPrediction_Bool - Can be set by drivers which implement DriverDirectMode to tell the compositor not to apply any prediction to the poses provided by the driver.

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4268903]

v1.0.10

01 Sep 20:14
Compare
Choose a tag to compare

OpenVR SDK 1.0.10

IVRCompositor:

IVROverlay:

  • New IVROverlay::CloseMessageOverlay for closing modal dashboard dialogs the process owns

IVRSystem:

  • Adds context to IVRSystem::GetOutputDevice required to discriminate graphics device in Vulkan

Miscellaneous

  • Fixes crashes under some multithreading circumstances using OpenVR VR_* APIs
  • Updates hellovr_vulkan sample to use IVRSystem::GetOutputDevice
  • Fixes a crash with hellovr_opengl sample under macOS

v1.0.9

19 Jul 23:43
Compare
Choose a tag to compare

OpenVR SDK 1.0.9
Drivers:

  • Added TrackedDeviceDisplayTransformUpdated, which allows HMD drivers to explicitly specify the 4x3 eye-to-head transforms. The classic mechanism of setting Prop_UserIpdMeters_Float is still supported.
  • Added Prop_DriverProvidedChaperonePath_String, which a driver can set on the HMD device to specify a fallback chaperone setup that will be used if no other chaperone data is available for the universe returned by that driver. This string is a JSON object in the same format as the .vrchap file.
  • Added VREvent_WirelessDisconnect and VREvent_WirelessReconnect events for display redirect drivers to notify the runtime of display connection status.

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4059277]

v1.0.8

14 Jun 22:03
Compare
Choose a tag to compare

OpenVR SDK 1.0.8:
General:

  • Added VRCompositorError_InvalidBounds - This is returned when the application passes texture bounds to Submit that are outside the range of -100.0 to 100.0 or are otherwise invalid.
  • Added sample programs: hellovr_vulkan and hellovr_dx12.

IVRVirtualDisplay:

  • The IVRVirtualDisplay interface is provided to allow OpenVR driver authors access to the final composited backbuffer intended for the headset's display. The primary expected use case is for wireless transport, though this could also be used for saving output to disk or streaming. From the perspective of the runtime, the VR compositor is interfacing with a virtual rather than an actual display. See https://github.com/ValveSoftware/virtual_display

IVRSystem:

  • GetOutputDevice interface added for applications to know which primary graphics adapter to use. This returns a LUID on Win32, vk::PhysicalDevice for Vulkan and id on OSX.

IVRDriverManager:

  • Public API to query installed device drivers.

Drivers:

  • Drivers can now set Prop_DriverDirectModeSendsVsyncEvents_Bool to true to indicate they will call VsyncEvent on their own. This enables avoiding the hardcoded 2.8ms vsync offset for IVRDriverDirectModeComponent implementations.
  • Allow drivers to specify which graphics adapter to use by settings Prop_GraphicsAdapterLuid_Uint64. This is a LUID on Win32.

MacOS/OSX:

  • includes a private framework compatible with Xcode 8 and higher. Embedding frameworks as binaries in your macOS app bundle can be error prone - see detailed instructions in issue #543 #543 (comment)

Cmake Build System (optional):

  • cmake script changes to better support Cygwin
  • supports building universal 32/64 binaries on OSX
  • supports building as a private OSX framework

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 4009583]