Skip to content

Releases: ValveSoftware/openvr

v1.0.7

01 May 21:07
Compare
Choose a tag to compare

OpenVR SDK 1.0.7:
General:

  • Updated structure packing to be more consistent across platforms.
  • New property (Prop_SecondsFromPhotonsToVblank_Float) to support rolling illumination displays.
  • New property (Prop_ResourceRoot_String). When present identifies the properly named driver subdir to be used for sourcing resources.
  • New properties which are automatically set based on components a given driver implements.
    • Prop_HasDisplayComponent_Bool
    • Prop_HasControllerComponent_Bool
    • Prop_HasCameraComponent_Bool
    • Prop_HasDriverDirectModeComponent_Bool
    • Prop_HasVirtualDisplayComponent_Bool

IVROverlay:

  • Added SetOverlayName method.
  • Added SetOverlayRenderModel method. Sets render model to draw behind this overlay and the vertex color to use, pass null for pColor to match the overlays vertex color. The model is scaled by the same amount as the overlay, with a default of 1m.
  • Added GetOverlayRenderModel accessor.
  • Added SetOverlayTransformOverlayRelative method. Sets the transform to relative to the transform of the specified overlay. This overlays visibility will also track the parents visibility.
  • Added GetOverlayTransformOverlayRelative accessor.

IVRServerDriverHost:

  • Added GetRawTrackedDevicePoses. Provides access to device poses for drivers. Poses are in their "raw" tracking space which is uniquely defined by each driver providing poses for its devices. It is up to clients of this function to correlate poses across different drivers. Poses are indexed by their device id, and their associated driver and other properties can be looked up via IVRProperties.

IVRVirtualDisplay:

  • New interface drivers can implement to redirect display output.
  • Added new device type (TrackedDeviceClass_DisplayRedirect) for accessories which redirect display output.

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

v1.0.6

31 Jan 01:39
Compare
Choose a tag to compare

OpenVR SDK 1.0.6:
General:

  • Updated source code and cmake configurations for openvr_api.dll (and dylib/so) for applications that need a static library.
  • Added VREvent_PropertyChanged event, which is sent when any property changes.
  • Added VREvent_PrimaryDashboardDeviceChanged event, which is sent when the user changes the dashboard laser pointer from one controller to another.

IVRCompositor:

  • Added initial support for DirectX 12 and OSX IOSurfaces. Use at your own risk. Forward compatibility is not guaranteed.
  • Added IVRCompositor::ReleaseMirrorTextureD3D11(). Call ReleaseMirrorTextureD3D11 instead of calling Release directly on the texture.

IVRApplications:

  • Added GetCurrentSceneProcessId(), which returns the process ID of the latest process to call VR_Init with the Scene application type.

Server driver Interface:

  • Greatly simplified IServerTrackedDeviceProvider::Init and its arguments. This function now takes only an IVRDriverContext. From there it can call GetGenericInterface to get the rest of the interface.
  • Added global accessor functions for drivers that are similar to those used by applications. Put this line at the start of your IServerTrackedDeviceProvider::Init function (and the equivalent line in Cleanup) to enable them:
    VR_INIT_SERVER_DRIVER_CONTEXT( pContext );
  • IServerTrackedDeviceProvider no longer has enumeration functions for drivers. If the provider contains an HMD it should call TrackedDeviceAdded with the details of that HMD before Init returns. Other devices can be added at any time by calls to TrackedDeviceAdded.
  • IVRServerDriverHost::TrackedDeviceAdded now takes all the required values for a new tracked device, including the device class and device driver interface pointer.
  • Replace the property functions on ITrackedDeviceServerDriver with the IVRProperties interface and the CPropertyHelpers helper functions. This should result in significantly less boilerplate code in drivers and allows drivers to invalidate properties immediately instead of waiting for the client-side cache to expire. Use vr::VRProperties() to get the new helper interface. See the sample driver for details.
  • Added a new "enable" setting to all drivers that will prevent the driver DLL from being loaded. The enable flag has been removed from the sample driver.
  • IServerDriverHost has been renamed to IVRServerDriverHost no longer contains a few functions that are now handled by property setters.
    • GetSettings() is now handled with vr::VRSettings()
    • PhysicalIpdSet() is now handled by setting the Prop_UserIpdMeters_Float property.
    • TrackedDevicePropertiesChanged() is now handled automatically when a property is set.
    • MCImageUpdated() was undocumented and not useful outside the Lighthouse driver. It has been removed.

CVRHiddenAreaHelpers:

  • This new helper class provides access to the hidden area mesh via the property system. You can access it with vr::VRHiddenArea() in a server driver.

IDriverLog:

  • This interface has been renamed to IVRDriverLog

IClientTrackedDeviceProvider:

  • Client drivers have been removed from the system. Drivers are no longer loaded into client processes. The functionality that used to be held in client drivers has moved:
    • BIsHmdPresent is implemented by looking for USB VID and PID values as specified in the driver manifest file: https://github.com/ValveSoftware/openvr/wiki/DriverManifest
    • GetHiddenAreaMesh is implemented via properties and the CVRHiddenAreaHelpers class. (See above)
    • GetMCImage was undocumented and not useful outside of the Lighthouse driver. It has been removed.
    • Watchdog mode, which allows SteamVR to start automatically on hardware activity, has been moved to a new driver type IVRWatchdogProvider.

IVRWatchdogProvider:

  • This provider is only loaded in app type SteamWatchdog. It monitors the hardware for changes and calls vr::VRWatchdogHost()->WatchdogWakeUp() if an event occurs that should start SteamVR. This is entirely optional. A driver that doesn't implement this provider will just not wake up SteamVR on hardware activity.

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

v1.0.5

12 Dec 20:04
Compare
Choose a tag to compare

OpenVR SDK 1.0.5
General:

  • Added final support for submitting Vulkan overlays and eye images. See this document for more information: https://github.com/ValveSoftware/openvr/wiki/Vulkan
  • Added TextureType_Vulkan, VRVulkanTextureData_t
  • Rename EGraphicsAPIConvention -> ETextureType.
  • New synchronous MessageOverlay API. Use IVROverlay::ShowMessageOverlay to display a message with up to four buttons.
  • Added ETrackedDeviceClass, GenericTracker
  • Added ETrackedPropertyError, PermissionDenied

IVRSystem (v15):

  • GetProjectionMatrix signature change, removed EGraphicsAPIConvention eProjType

IVRCompositor (v19):

  • Added GetVulkanInstanceExtensionsRequired, GetVulkanDeviceExtensionsRequired

IVROverlay (v14):

  • Added VROverlayFlags_VisibleInDashboard
  • GetOverlayTexture signature change (includes overlay texture bounds)
  • Added GetOverlayFlags
  • Added ShowMessageOverlay

IVRTrackedCamera (v13):

  • Renamed GetCameraIntrinsics

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

v1.0.4

16 Nov 17:40
Compare
Choose a tag to compare

OpenVR SDK 1.0.4:
General:

  • Further refinement to Vulkan support. Note: the interface is still subject to change.

IVRSystem (v14):

  • ComputeDistortion signature change. Previous version used nan as error signaling. New version returns explicit success.
  • GetHiddenAreaMesh takes optional EHiddenAreaMeshType argument to request Standard, Inverse, or LineLoop mesh.

IVRCompositor (v18):

  • New submit error, VRCompositorError_AlreadySubmitted (if you submit the same eye twice)
  • GetFrameTimings signature change
  • Exposed GetCurrentFadeColor, GetCurrentGridAlpha

IVROverlay (v13):

  • Added SetOverlayIntersectionMask

IServerDriverHost:

  • Added PollNextEvent

IClientDriverHost:

  • Removed GetSettings
  • Added GetGenericInterface

ClientTrackedDeviceProvider (v5):

  • GetHiddenAreaMesh takes additional argument, EHiddenAreaMeshType

Pull Requests integrated:
#48 Format README in Markdown
#58 correct detection of GCC
#68 helloworldoverlay: Specify c++11 to fix gcc errors
#76 Remove duplicate, unneeded glBindBuffer call.
#135 Invert m_mat4HMDPose after assignment copying.
#191 Document additional methods
#278 include stdbool.h on non windows platform
#306 Multi-platform CMake support.

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

v1.0.3

10 Oct 23:14
Compare
Choose a tag to compare

OpenVR SDK 1.0.3:

General:

  • Added preliminary Vulkan support
  • Added Button ID k_EButton_ProximitySensor. Use this for raw access to a proximity sensor if there is one.
  • Fixed spelling error in EVROverlayError, "VROVerlayError_KeyboardAlreadyInUse"

IVRSettings:

  • Improved default value handling. Defaults are no longer passed with each individual call to GetBool, GetInt32, GetFloat, and GetString. Instead, system-wide defaults are specified in "default.vrsettings" (in the resources/setting/ directory of either the runtime or the driver_xxx directory.) If not explicitly defined, the default will be false, 0, 0.0 or "" with an error of VRSettingsError_UnsetSettingHasNoDefault.
  • Added explicit EVRSettingsError for VRSettingsError_JsonParseFailed

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

v1.0.2

06 Jul 00:03
Compare
Choose a tag to compare

OpenVR SDK 1.0.2:

General:

  • Split several VR_Init error return values out into unique causes.
  • Added Prop_ControllerRoleHint_Int32, which a controller driver can optionally use to return the best matching ETrackedControllerRole type for the controller. Use this to specify a controller that is physically shaped for one hand only or when the driver is able to determine which hand is holding the controller through sensors or other means.
  • Added VREvent_OverlayFocusChanged, which is sent when an overlay was under the laser mouse and isn?t anymore or when there was no overlay under the laser mouse and now there is.

IVRApplications:

  • Added LaunchApplicationFromMimeType. This allows the caller (usually Steam) to start the application that is associated with that mime type if it is not already running. If the application is not running it will be started with the specified arguments appended to existing arguments for the app. If the application is already running it will receive VREvent_ApplicationMimeTypeLoad and can retrieve the arguments by passing event.applicationLaunch.unArgsHandle to IVRApplications:: GetApplicationLaunchArguments.
  • Added other support functions for mime types.

IVRCompositor:

  • Split out Compositor_FrameTiming's m_flSceneRenderGpuMs into m_flPreSubmitGpuMs and m_flPostSubmitGpuMs. Post-Submit time was not previously being recorded.

IVROverlay:

  • Added VROverlayFlags_SortWithNonSceneOverlays. This allows the scene application's overlays to sort with other non-scene overlays.
  • Added SetOverlayTexelAspect/GetOverlayTexelAspect. This allows an overlay to control the aspect ratio of its texels. By default all overlay texels are square (i.e. 1.0)
  • Added SetOverlaySortOrder/GetOverlaySortOrder. This allows an overlay to be force to be sorted above or below other overlays. It is most useful for overlays from the scene application that want to explicitly control their draw order.

IVRTrackedCamera:

  • Added accessors to work with tracked camera gpu resources:
    ** GetVideoStreamTextureSize
    ** GetVideoStreamTextureD3D11
    ** GetVideoStreamTextureGL
    ** ReleaseVideoStreamTextureGL

IVRResources:

  • New interface to allow access to resource files in the runtime or user-installed drivers.

IVRCameraComponent:

  • Simplified interface by removing duplicate functions already provided by properties and deprecating the arbitrary distortion methods.

IClientDriverHost:

  • Added WatchdogWakeUp. When a client driver is in Watchdog mode it should call this if a hardware event happens that should cause the system to wake up. The Lighthouse driver, for instance, calls this method when a system button is pressed or a controller is turned on.

IClientTrackedDeviceProvider:

  • Added eDriverMode argument to Init. When this is passed as ClientDriverMode_Watchdog the driver should enter a low-power state where hardware is being monitored. If the driver does not support watchdog mode it should return VRInitError_Init_LowPowerWatchdogNotSupported.

v1.0.1

10 Jun 19:17
Compare
Choose a tag to compare

OpenVR SDK 1.0.1:
IVROverlay:

  • Added event VREvent_ImageFailed which is sent when SetOverlayFromFile is called and the file load fails.

IVRScreenshots:
Added a new API via IVRScreenshots for screenshot support in VR. This feature is still being developed and is currently in a beta state. You can enable screenshot capture by selecting Enable Screenshots in the general settings of the VRMonitor. Documentation for this new API is available at, https://github.com/ValveSoftware/openvr/wiki/IVRScreenshots_Overview

Driver API:

  • Split Oculus driver direct mode into a new component and out of IVRDisplayComponent. Other drivers generally don't need to implement this component.

[git-p4: depot-paths = "//vr/steamvr/sdk_release/": change = 3492473]
master v1.0.1

v1.0.0

24 May 20:40
Compare
Choose a tag to compare

SDK Release 1.0.0:

IVRApplications:

  • Added VREvent_ApplicationListUpdated event. This is sent whenever an application manifest is added, removed, or updated.

IVRRenderModels:

  • Added VREvent_ModelSkinSettingsHaveChanged event. This is sent when the user has selected a new controller or base station/camera replacement model. If your application uses the IVRRenderModel interface to load the user's actual controllers it should reload them after receiving this event.
  • Added GetRenderModelOriginalPath function. This returns the non-overridden full path to the render model so controller/base station/camera skinning can be avoided if the application requires it.
  • Added GetRenderModelThumbnailURL function. This returns a URL (usually to a file) for a 4x3 aspect ratio thumbnail image that can be used to preview the render model.
  • Added GetRenderModelErrorNameFromEnum so applications don't need to provide their own lookup table to interpret these errors.

IVRCompositor:

  • Added cumulative stats tracked per-application and associated accessor.
  • Added interface to access the mirror textures (per-eye). This is the undistorted view with chaperone and overlays (e.g. dashboard) drawn on top.
  • Added preliminary support for screenshots. This interface is not stable yet and should be ignored for now.

IVRTrackedCamera:

  • Exposed the initial version. Provides developers access to poll streaming frames from the HMD front facing camera with the associated tracked HMD pose. The image is available as either a pre-corrected distorted view or corrected undistorted view.
  • Added a thin Qt example for getting and showing the camera image/pose.

IVROverlay:

  • Added interface to get size of a texture used by an overlay. This is useful when setting the overlay texture by filename.
  • Added ability to render side-by-side stereo content and panoramas.

Driver Interface:

  • IVRCameraComponent is still in a development phase.
  • Added provider method GetInterfaceVersions. This contains all the version numbers of the other interfaces in the driver. Drivers should return vr::k_InterfaceVersions from the version of openvr_driver.h that they were compiled against.
  • GetTrackedDeviceDriver and FindTrackedDeviceDriver no longer take an interface version. The caller will expect the version of the interface returned in GetInterfaceVesions()

HelloVR sample:

  • Fixed compile error around glDebugMessageCallback that could happen with certain versions of the OpenGL headers.
  • Fixed compile error from LoadRenderModel->LoadRenderModel_Async name change.
  • Fixed compile error from LoadTexture->LoadTexture_Async name change.

v0.9.20

03 May 23:28
Compare
Choose a tag to compare

OpenVR SDK 0.9.20:
General:

  • Added VREvent_InputFocusChanged - This event is sent whenever input focus changes from one process to another.
  • Added VREvent_AudioSettingsHaveChanged - This event is sent whenever the user changes audio settings.
  • Added VREvent_ReprojectionSettingHasChanged - This event is sent when the user turns interleaved reprojection on or off.
  • Added VRInitError_Compositor_FirmwareRequiresUpdate - This error code will be returned by the compositor when there is a mandatory firmware update pending.

IVRCompositor:

  • Compositor_FrameTiming now contains m_nReprojectionFlags. This will be 0 or more of:
    . VRCompositor_ReprojectionReason_Cpu
    . VRCompositor_ReprojectionReason_Gpu
  • Added ForceReconnectProcess. Call this to force a disconnect and reconnect to the compositor.
  • Added SuspendRendering. Call this when you know your process isn't going to render frames for a while. This often happens while loading new maps.

IVROverlay:

  • Added overlay flag VROverlayFlags_TransferOwnershipToInternalProcess. This flag causes overlays owned by one process to be transferred to the new process spawned by a call to IVRApplications::LaunchInternalProcess. This can be useful for smoothing over such transitions from the user's point of view.

Driver Interface:

  • Added VREvent_DriverRequestedQuit - A driver can post this event to ask the system to shut down.
  • Added IVRDisplayComponent:: GetNextSwapTextureSetIndex to retrieve the index in the texture set to use for the next frame's render targets.
  • Changed IVRDisplayComponet:: CreateSwapTextureSet to create three textures to allow a slightly longer round-robin list.

NOTE: As of SDK 0.9.20 the driver interfaces will remain backward-compatible indefinitely. Future runtime changes will not break the ability to load drivers built against at least SDK 0.9.20.

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

v0.9.19

10 Mar 01:59
Compare
Choose a tag to compare

OpenVR SDK 0.9.19:
IVRRenderModels:

  • Added LoadIntoTextureD3D11_Async. Loads render model texture asynchronously and copies into provided texture (as opposed to creating one and returning it).

IVROverlay:

  • Added SetOverlayRenderingPid/GetOverlayRenderingPid to let you delegate rendering of an overlay's texture to another process
  • Added new event VREvent_OverlaySharedTextureChanged, this is fired when the backing shared texture for an overlay target changes, which is useful when using GetOverlayTexture
  • Added GetOverlayTexture/ReleaseNativeOverlayHandle to let you retrieve a native texture pointer backing an overlay targe

IVRApplications:

  • Added new application type, templates. Use the "is_template" key in your manifest to define an application of this type, and the LaunchTemplateApplication call to launch this application. Template applications let you override the keys in the manifest a runtime, useful for launching viewer style apps that want optional command line arguments and for you to transition from the application back to itself again.

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