)]}'
{
  "log": [
    {
      "commit": "91825305130f446f82054c1ec3d416321ace0072",
      "tree": "c027d965a7cf68a3fb472219827dd02ddd14f590",
      "parents": [
        "4555c56ebd473794fc6a680bf2cbbb6a072b015f"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Fri Aug 15 22:58:05 2025"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Fri Aug 15 22:58:05 2025"
      },
      "message": "Updating SteamVR SDK From 2.12.1 to 2.12.14\n\nMajor notes include:\n * Add struct VREyeTrackingData_t, used with CreateEyeTrackingComponent, and UpdateEyeTrackingComponent for drivers to provide eye tracking input to SteamVR.\n * Synchronize props to upstream SteamVR.\n * Testing with GetSubmitTexture - Do not use - this feature will likely be removed.\n * NewSharedVulkanSemaphore signature is now different, allowing for a counting semaphore.\n\nmerged vr_steamvr_rel_to_sdk_release\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 9982682]\n"
    },
    {
      "commit": "4555c56ebd473794fc6a680bf2cbbb6a072b015f",
      "tree": "0269debfa525d160ecb56275504b0fe127f5f55c",
      "parents": [
        "594b9a4ca2a1de690e936e297ab761cb79c67a1c"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Tue Jun 10 20:32:40 2025"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Tue Jun 10 20:32:40 2025"
      },
      "message": "Hotfix integrating CL 9819994 fixing sharedlibtools_public.cpp\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 9820126]\n"
    },
    {
      "commit": "594b9a4ca2a1de690e936e297ab761cb79c67a1c",
      "tree": "cf80ae38845109cc54bff13d1ab57f4dfaa59d58",
      "parents": [
        "9ebbda4af0da163b0606c8b88da4cde6bb3b85f0"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Jun 09 22:51:38 2025"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Jun 09 22:51:38 2025"
      },
      "message": "Hotfix integrating CL 9816989\n * Delete a couple of Assert() functions, since we don\u0027t provide that (only AssertMsg) and these are of dubious value\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 9817136]\n"
    },
    {
      "commit": "9ebbda4af0da163b0606c8b88da4cde6bb3b85f0",
      "tree": "306e9b725b28ae99f2ce0a1e8be4e30c3eac9bfe",
      "parents": [
        "ebd425331229365dc3ec42d1bb8b2cc3c2332f81"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Jun 09 20:53:55 2025"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Jun 09 20:53:55 2025"
      },
      "message": "# OpenVR SDK 2.12.1\n * Added properties used internal to SteamVR, and OpenXR\n * Added preprocessor option for OPENVR_NO_STL\n * Added property for disabling/enabling keyboard privacy\n * Added driver feature to allow HMD or SteamVR to control texture index and application poses.  For HMD Drivers.  We recommend display drivers update to the new default behavior, allowing SteamVR to control the texture index, and automatically compositing multiple layers into the system layer\n * Add VROverlayFlags_MinimalControlBar\n * Add PollNextEventWithPoseAndOverlays to IVRSystem to allow overlay applications to poll all events associated with any overlay it\u0027s created. This is equivalent to calling PollNextOverlayEvent for each of your overlays as well as PollNextEvent\n * Added CreatePoseComponent and UpdatePoseComponent to IVRDriverInput\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 9816396]\n"
    },
    {
      "commit": "ebd425331229365dc3ec42d1bb8b2cc3c2332f81",
      "tree": "bcaa663736b114486ef79e8ecb126edbf5f46563",
      "parents": [
        "ae46a8dd0172580648c8922658a100439115d3eb"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Jun 17 19:32:12 2024"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Jun 17 19:32:12 2024"
      },
      "message": "Updating SteamVR SDK From 2.5.1 to 2.7.1.\n\nMajor notes include:\n * Added ImportDmabuf shared texture handle controls\n * Added IVROverlay::CreateSubviewOverlay and SetSubviewPosition\n * Added IVRIPCResourceManagerClient interface.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8978552]\n"
    },
    {
      "commit": "ae46a8dd0172580648c8922658a100439115d3eb",
      "tree": "8af79b13bd32bc41b681f5e50d86750833219420",
      "parents": [
        "f51d87ecf8f7903e859b0aa4d617ff1e5f33db5a"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Tue Mar 26 23:53:57 2024"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Tue Mar 26 23:53:57 2024"
      },
      "message": "# OpenVR SDK 2.5.1\n\nClients:\n * Include Transfer Time in Frame Timing, when using Steam Link\n\nDrivers:\n * Include HMD Pose Prediction Time\n * Adjust behavior for GetFrameTiming\n * Add IVRIPCResourceManagerClient for Linux\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8791766]\n"
    },
    {
      "commit": "f51d87ecf8f7903e859b0aa4d617ff1e5f33db5a",
      "tree": "056bf6536340c1860419b8ef8db1fa4edbffacb1",
      "parents": [
        "15f0838a0487feb7da60acd39aab8099b994234c"
      ],
      "author": {
        "name": "Nathan Nuber",
        "email": "nathann@valvesoftware.com",
        "time": "Fri Jan 19 20:40:20 2024"
      },
      "committer": {
        "name": "Nathan Nuber",
        "email": "nathann@valvesoftware.com",
        "time": "Fri Jan 19 20:40:20 2024"
      },
      "message": "# OpenVR SDK 2.2.3\n\n* New VREvent_DesktopMightBeVisible: Sent when any known desktop related overlay is visible\n* New VREvent_DesktopMightBeHidden: Sent when all known desktop related overlays are hidden\n\nIVRCompositor:\n* Added SubmitWithArrayIndex.\n\nIVRDisplayComponent:\n* Add documentation on the new ComputeInverseDistortion method.\n\nIVRChaperone:\n* Amend comments about GetPlayAreaRect to the correct description of its behavior.\n* Add documentation on the chaperone json file.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8643635]\n"
    },
    {
      "commit": "15f0838a0487feb7da60acd39aab8099b994234c",
      "tree": "d55e2f4253899252fb93301af3b000d0a9928695",
      "parents": [
        "5e45960cf44d6eb19bbadcae4a3d32578a380c17"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Tue Nov 07 21:34:25 2023"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Tue Nov 07 21:34:25 2023"
      },
      "message": "OpenVR SDK 2.0.10\n\n* Added simpletrackers driver sample.  This driver provides an example on how to add multiple trackers to SteamVR for use with features like full-body tracking.\n* New Prop_DriverDisplaysIPDChanges_Bool that drivers can set to hide SteamVRs IPD popup.\n* New IVRCompositor SubmitFlag: Submit_IsEgl.  Specifies the texture is an EGL texture and not an glX/wGL texture (Linux only, currently).\n* New VREvent_DashboardThumbChanged. Sent when a dashboard thumbnail image changes.\n* New VREvent_AnyDriverSettingsChanged.  Sent when any driver settings change.\n* New VREvent_KeyboardOpened_Global. Sent globally when the keyboard is opened.\n* New VREvent_KeyboardClosed_Global. Sent globally when the keyboard is closed.\n* Added cursorIndex to VREvent_Mouse_t, VREvent_Scroll_t, and VREvent_Overlay_t.\n* Added overlayHandle to VREvent_Keyboard_t.\n* Fix 32/64 struct misalignment on Linux for Compositor_FrameTiming.\n* New VROverlayFlags:\n  - VROverlayFlags_EnableControlBar - If this is set, this overlay will have a control bar drawn underneath of it in the dashboard.\n  - VROverlayFlags_EnableControlBarKeyboard - If this is set, the overlay control bar will provide a button to toggle the keyboard.\n  - VROverlayFlags_EnableControlBarClose - If this is set, the overlay control bar will provide a \"close\" button which will send a VREvent_OverlayClosed event to the overlay when pressed. Applications that use this flag are responsible for responding to the event with something that approximates \"closing\" behavior, such as destroying their overlay and/or shutting down their application.\n  - VROverlayFlags_EnableClickStabilization - If this is set, click stabilization will be applied to the laser interaction so that clicks more reliably trigger on the user\u0027s intended target\n  - VROverlayFlags_MultiCursor - If this is set, laser mouse pointer events may be sent for the secondary laser. These events will have cursorIndex set to 0 for the primary laser and 1 for the secondary.\n* New EKeyboardFlags:\n  - KeyboardFlag_ShowArrowKeys - Shows arrow keys on the keyboard when in minimal mode. Buffered (non-minimal) mode always has them. In minimal mode, when arrow keys are pressed, they send ANSI escape sequences (e.g. \"\\x1b[D\" for left arrow).\n  - KeyboardFlag_HideDoneKey - Shows the hide keyboard button instead of a Done button. The Done key sends a VREvent_KeyboardDone when clicked. Hide only sends the Closed event.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8475196]\n"
    },
    {
      "commit": "5e45960cf44d6eb19bbadcae4a3d32578a380c17",
      "tree": "c1fe755c933d6ab1455387a37f143e8f1cdaa996",
      "parents": [
        "751538d6cbde9d060e5906c1d45c8cedeaf0ee18"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Fri Aug 25 00:06:12 2023"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Fri Aug 25 00:06:12 2023"
      },
      "message": "[openvr] Public API fix for C# (unity) (vrshared_double -\u003e double)\r\n\nCLs\r\n8290392\r\n\nMerging using vr_steamvr_rel_hotfix_to_sdk_release\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8291348]\n"
    },
    {
      "commit": "751538d6cbde9d060e5906c1d45c8cedeaf0ee18",
      "tree": "fcb099a4e403b2914c0327afba1a1142353aa2ee",
      "parents": [
        "32dcadc20903a820996e83e61c719da3cb359261"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Tue Aug 08 22:52:53 2023"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Tue Aug 08 22:52:53 2023"
      },
      "message": "# OpenVR SDK 1.26.7\r\n\nIVROverlay:\r\n* Removed defunct GetOverlayTransformOverlayRelative and SetOverlayTransformOverlayRelative interfaces\r\n\nEVREventType:\r\n* Removed defunct VREvent_SceneFocusChanged\r\n* Added VREvent_SceneAppPipeDisconnected - Called when the scene app\u0027s pipe has been closed (data is process)\r\n\nETrackedDeviceProperty:\r\n* Added Prop_Hmd_SupportsHDR10_Bool\r\n* Added Prop_Hmd_EnableParallelRenderCameras_Bool (drivers can set this compensate for canted and/or clocked displays)\r\n* Added Prop_DriverProvidedChaperoneJson_String (overrides Prop_DriverProvidedChaperonePath_String)\r\n* Renamed Prop_Hmd_SupportsRoomViewDirect_Bool\r\n* Renamed Prop_Hmd_SupportsAppThrottling_Bool\r\n* Added Prop_Hmd_SupportsGpuBusMonitoring_Bool\r\n* Added Prop_DSCVersion_Int32\r\n* Added Prop_DSCSliceCount_Int32\r\n* Added Prop_DSCBPPx16_Int32\r\n\nVROverlayTransformType:\r\n* Removed defunct VROverlayTransform_SystemOverlay\r\n* Added VROverlayTransform_Subview\r\n\nCompositor_CumulativeStats:\r\n* Added m_nNumFrameSubmits\r\n* Added m_flSumCompositorCPUTimeMS\r\n* Added m_flSumCompositorGPUTimeMS\r\n* Added m_flSumTargetFrameTimes\r\n* Added m_flSumApplicationCPUTimeMS\r\n* Added m_flSumApplicationGPUTimeMS\r\n* Added m_nNumFramesWithDepth\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8250329]\n"
    },
    {
      "commit": "32dcadc20903a820996e83e61c719da3cb359261",
      "tree": "6ead4d98b1b9f5314d257fa24d9759df53b7c4f3",
      "parents": [
        "4ccdeb8b2a5130e5a7e610321cfa5a711e36dbd1"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Aug 07 21:35:18 2023"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Mon Aug 07 21:35:18 2023"
      },
      "message": "[openvr-docs] Remove incorrect note about watchdog mode being deprecated. \n\nIntegreate CL #8245927 (via CL #8245961) \n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8245999]\n"
    },
    {
      "commit": "4ccdeb8b2a5130e5a7e610321cfa5a711e36dbd1",
      "tree": "910b6e90c0d455196d51bfd791b7c6e356c52682",
      "parents": [
        "d0adf64ddf74fef1d9df54678e8e992964a68990"
      ],
      "author": {
        "name": "Keith Bradner",
        "email": "keithb@valvesoftware.com",
        "time": "Wed Jun 07 22:05:16 2023"
      },
      "committer": {
        "name": "Keith Bradner",
        "email": "keithb@valvesoftware.com",
        "time": "Wed Jun 07 22:05:16 2023"
      },
      "message": "[openvr-docs] Update documentation on Automatic Rebinding to include autoremapping.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8109558]"
    },
    {
      "commit": "d0adf64ddf74fef1d9df54678e8e992964a68990",
      "tree": "6c2d33cd5ceb4955ba8c832691a0b408212b898f",
      "parents": [
        "03897eb12fa9de5cd90bf2beee36866a202afed0"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Fri May 26 22:18:12 2023"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Fri May 26 22:18:12 2023"
      },
      "message": "[openvr-docs] Correct documentation on status icons and add documentation on trackers.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 8087067]\n"
    },
    {
      "commit": "03897eb12fa9de5cd90bf2beee36866a202afed0",
      "tree": "ea76e8b2133ca654c916232c240149ae0e32b061",
      "parents": [
        "8f71cf8d9892006939f5e7a9473b6984387a8ec3"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Wed Mar 29 00:05:38 2023"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Wed Mar 29 00:05:38 2023"
      },
      "message": "[openvr-docs] Update driver documentation for controller compatibility features and device emulation for 1.26.1 Beta\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 7955035]\n"
    },
    {
      "commit": "8f71cf8d9892006939f5e7a9473b6984387a8ec3",
      "tree": "809afcdc45de2dfe80e56b5ca58247a49aac8ecd",
      "parents": [
        "1a0ea26642e517824b66871e6a12280a426cfec3"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Wed Mar 08 00:40:29 2023"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Wed Mar 08 00:40:29 2023"
      },
      "message": "[openvr]: add driver documentation\n\nCLs\n7863167\n7878820\n7888532\n7897556\n7897558\n\nMerging using vr_steamvr_rel_to_sdk_release\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 7899071]\n"
    },
    {
      "commit": "1a0ea26642e517824b66871e6a12280a426cfec3",
      "tree": "62cd3ad7d5817459e4f377bbc820fc6ee3c4d8cb",
      "parents": [
        "01c6ba718fcd4e02f3b25a0c6b3fdf8f0e2155b5"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Thu Jan 19 21:25:36 2023"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Thu Jan 19 21:25:36 2023"
      },
      "message": "[sdk]: linuxarm64 define used when targeting aarch64 arch\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 7788258]\n"
    },
    {
      "commit": "01c6ba718fcd4e02f3b25a0c6b3fdf8f0e2155b5",
      "tree": "b0bc018771df7f2b482a13df195d0c32c561249b",
      "parents": [
        "08de3821dfd3aa46f778376680c68f33b9fdcb6c"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Wed Nov 23 00:15:35 2022"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremy.selan@gmail.com",
        "time": "Wed Nov 23 00:48:06 2022"
      },
      "message": "[sdk]: fixed compilation of public openvr api\n[sdk]: update with latest from main\nCopying using vr_steamvr_main_to_sdk_release\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 7680507]\n"
    },
    {
      "commit": "08de3821dfd3aa46f778376680c68f33b9fdcb6c",
      "tree": "21b774d1aebe53bd75ff68d1498e69545f9fc35e",
      "parents": [
        "0aad319a4f6bd9461262eb6cb5497476507a5b8a"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Fri Aug 19 20:12:52 2022"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Fri Aug 19 20:12:52 2022"
      },
      "message": "# OpenVR SDK 1.23.7\n\nIVROverlay:\n* Added the ability to specify the pitch angle (in radians) of the overlay before curvature is applied -- to form a fan or disk.  Previously, this used the global pitch angle, which prevented these overlays from being pitched independently (i.e. the cone segment or disk were always and only vertically aligned.  Note: The old behavior will continue to be applied when using the older interface to avoid breaking legacy apps.  Overlay applications which update to this version and were using pitched curved overlays, are now required to call SetOverlayPreCurvePitch explicitly.\n* Added WaitFrameSync.  This function will block until the top of each frame, and can therefore be used to synchronize with the runtime\u0027s update rate.  Note: In non-async mode, some signals may be dropped due to scene app performance, so passing a timeout of 1000/refresh rate may be useful depending on the overlay app\u0027s desired behavior.\n\nIVRRenderModels:\n* Added VRRenderModelTextureFormat_RGBA16_FLOAT for loading dds textures.\n* Added mipmap support to render model textures.\n\nIVRDriverDirectModeComponent:\n* PostPresent now takes throttling parameters.  Drivers which implement this interface can set Prop_SupportsAppThrottling_Bool to enable throttling / prediction UI in per-app video settings.\n\nDriver Interface:\n* Added VRInitError_Driver_WirelessHmdNotConnected. A driver can return this error when it expects to connect to an HMD over a wireless link, but has not yet connected. Instead of HMD Not Found, the user will be shown a message that encourages them to turn on their wireless headset.\n\nApp containers:\n* Added VRInitError_Init_NoServerForAppContainer. This error can be returned when VR_Init is called from a process that is running inside an application container on Windows when SteamVR is not running. In this context, SteamVR must be running before the application can start.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 7449484]\n"
    },
    {
      "commit": "0aad319a4f6bd9461262eb6cb5497476507a5b8a",
      "tree": "c701a2b6bd644ace8114496136435f16011b2ea1",
      "parents": [
        "758906251fd932f59f50c510d8c375aa34229887"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Thu Aug 18 17:52:01 2022"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Thu Aug 18 17:52:01 2022"
      },
      "message": "[ steamvr - sdk ]\n* Editing codegen scripts to point to the public openvr_api.json.\n\nNote: Keep these changes when integrating from main/rel, but do not integrate them to main/rel.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 7446031]\n"
    },
    {
      "commit": "758906251fd932f59f50c510d8c375aa34229887",
      "tree": "3990d5c6b840aeec3c6db39cc9f64947b89660c0",
      "parents": [
        "4c85abcb7f7f1f02adaf3812018c99fc593bc341"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Thu Aug 18 17:39:17 2022"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Thu Aug 18 17:39:17 2022"
      },
      "message": "Merging using vr_steamvr_rel_to_sdk_release\n\nIntegration via vr_steamvr_main_to_rel of:\nChange 7445792 by aaronl:\n\t[ steamvr - vrsdk ] * Adding the scripts we use to codegen C# and C bindings to the public SDK.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 7445965]\n"
    },
    {
      "commit": "4c85abcb7f7f1f02adaf3812018c99fc593bc341",
      "tree": "c454257eefbabb80a425d9947529935e95b8d6ea",
      "parents": [
        "e3d37563fd0405117f035c111346f60ca12625ba"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Feb 25 00:57:03 2021"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Feb 25 00:57:03 2021"
      },
      "message": "# OpenVR SDK 1.16.8\n\nIVRCompositor:\n* Added support for OpenGL array textures via the Submit_GLArrayTexture flag.\n\n\nIVROverlay:\n* Added support for overlays that support projections via SetOverlayTransformProjection\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 6385862]\n"
    },
    {
      "commit": "e3d37563fd0405117f035c111346f60ca12625ba",
      "tree": "1643c9b7816ac2221e1346e395b5d817cb24edbc",
      "parents": [
        "0eb70325a4ea3edca2a0ff8aefa631f2529e6eb7"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Oct 02 01:55:28 2020"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Oct 02 01:55:28 2020"
      },
      "message": "Removed out of date OSX files from the SDK\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 6120212]\n"
    },
    {
      "commit": "0eb70325a4ea3edca2a0ff8aefa631f2529e6eb7",
      "tree": "45a0d88dcacc59393e6e8627a074009bd50d14c5",
      "parents": [
        "793739cc6bd3937d713ebc6d073627a8881b8808"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Fri Sep 18 18:20:27 2020"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Fri Sep 18 18:20:27 2020"
      },
      "message": "# OpenVR SDK 1.14.15\n\nNew events:\n* VREvent_DesktopViewUpdating\n* VREvent_DesktopViewReady\n\nIVRDriverDirectModeComponent:\n* Updated CreateSwapTextureSet to (optionally) allow NTHandle support\n\nIVRServerDriverHost:\n  * Added SetDisplayProjectionRaw\n  * Added SetRecommendedRenderTargetSize\n  * Renamed TrackedDeviceDisplayTransformUpdated -\u003e SetDisplayEyeToHead\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 6100641]\n"
    },
    {
      "commit": "793739cc6bd3937d713ebc6d073627a8881b8808",
      "tree": "665a3f4ce4e48f13d6c82660284983111c3a7b6e",
      "parents": [
        "6192a30d2dee3d43731da0831e8639fbf9b90943"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Jul 30 18:32:17 2020"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Jul 30 18:32:17 2020"
      },
      "message": "Fixed GitHub capitalization per https://github.com/ValveSoftware/openvr/pull/1416\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 6021408]\n"
    },
    {
      "commit": "6192a30d2dee3d43731da0831e8639fbf9b90943",
      "tree": "b7a518127b030e1689c016e7883ff7e12a694310",
      "parents": [
        "3a010f0f668d8de59fcba75b14e08a6a08ec68a0"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jul 17 19:31:14 2020"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jul 17 19:31:14 2020"
      },
      "message": "SteamVR SDK 1.13.10\n\nChaperone: \n* Added VREvent_StandingZeroPoseReset, which is sent when a user triggers the new reset standing zero pose button in the SteamVR dashboard.\n* Moved ResetSeatedZeroPose from IVRSystem to IVRChaperone\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 6001169]\n"
    },
    {
      "commit": "3a010f0f668d8de59fcba75b14e08a6a08ec68a0",
      "tree": "3695316a79a0ffec49ce0501d972e72500480ac5",
      "parents": [
        "ace70602054a550951a83648e29aef70b53a2891"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Wed Jun 03 20:59:37 2020"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Wed Jun 03 20:59:37 2020"
      },
      "message": "OpenVR SDK 1.12.5\n\nVulkan: \n* Added support for texture arrays\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5908460]\n"
    },
    {
      "commit": "ace70602054a550951a83648e29aef70b53a2891",
      "tree": "76886bb9b1bacdfacf7733be6350a10dd639f424",
      "parents": [
        "7acfb2ddc364558610b6072a5dc4423434400750"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Apr 24 01:06:49 2020"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Apr 24 01:06:49 2020"
      },
      "message": "OpenVR SDK 1.11.11\n\nNew events:\n* Added VREvent_WindowsMRSectionSettingChanged, which is sent whenever a setting in the \"driver_holographic\" section changes.\n* Added VREvent_OtherSectionSettingChanged, which is sent when a setting changes in a section that doesn\u0027t have an event of its own.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5825862]\n"
    },
    {
      "commit": "7acfb2ddc364558610b6072a5dc4423434400750",
      "tree": "0cb8e1acc0d4b2d97b5df4ce39e5c10767e33780",
      "parents": [
        "88055daccd6ef71c7fe99eac5a2b31ae096e5ffb"
      ],
      "author": {
        "name": "Gabe Rowe",
        "email": "gaber@valvesoftware.com",
        "time": "Wed Apr 01 04:42:24 2020"
      },
      "committer": {
        "name": "Gabe Rowe",
        "email": "gaber@valvesoftware.com",
        "time": "Wed Apr 01 04:42:24 2020"
      },
      "message": "Remove old Compositor_OverlaySettings struct references\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5787046]\n"
    },
    {
      "commit": "88055daccd6ef71c7fe99eac5a2b31ae096e5ffb",
      "tree": "112766e33431103ec16c9d3cd4e38320eac5a5b5",
      "parents": [
        "26fa19eb86ab3c589af2bdbc77449d61a8ff799b"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Mon Mar 23 22:09:59 2020"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Mon Mar 23 22:09:59 2020"
      },
      "message": "Merging using vr_steamvr_rel_to_sdk_release.\n\nThis should be everything in 1.10.32\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5773387]\n"
    },
    {
      "commit": "26fa19eb86ab3c589af2bdbc77449d61a8ff799b",
      "tree": "e58c9d49f5fb751de759143e4243821ce2b5b469",
      "parents": [
        "39205f6b281a6131d1373d0217c1ab9ed19735ea"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Mar 17 01:03:23 2020"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Mar 17 01:03:23 2020"
      },
      "message": "# OpenVR SDK 1.10.30\n\nIVRHeadsetView:\n* Allows scene applications access the contents of the \"VR View\" window, including modifying properties of their own instances of that window. See the header file for details.\n\nIVROverlayView:\n* Allows applications to read overlay textures and send mouse events to those overlays. See the header file for details.\n\nIVRCompositor:\n* Added Submit_FrameDiscontinuity flag which can be passed to Submit to identify a discontinuity with the previous frame (e.g. when the player teleports).  This prevents SteamVRs Motion Smoothing from being applied using that pair of frames.\n* IVRCompositor::Submit  Can now handle DirectX Texture Arrays. Index 0 for the left eye, Index 1 for the right eye\n\nIVRRenderModels:\n* Added VRComponentProperty_IsHighlighted, which is set to true for any render model component that should be highlighted for an input binding. \n\nIVROverlay:\n* The DualAnalog input method is no longer supported.\n* Added VROverlayFlags_WantsModalBehavior. This flag causes an overlay to get a VREvent_Modal_Cancel event whenever the user clicks off of the overlay. This is ignored for dashboard overlays.\n* Added flags for keyboard usage. minimal mode is now specified with KeyboardFlag_Minimal.  \n* Made modal keyboard behavior optional. To get the behavior from pre-1.10 SDKs, pass KeyboardFlag_Modal.\n* Added VREvent_LockMousePosition and VREvent_UnlockMousePosition, which are sent to overlays when a user is laser mousing over the overlay and performs the LockMousePosition compositor action.\n* Removed support for rendermodels attached to overlays. This feature is no longer supported.\n\nIVRInput:\n* Added global action set priority. When this is enabled in settings, overlay applications can override part or all of the input available to scene applications. See the header file comments for more details.\n* Added GetDominandHand/SetDominantHand. This allows an application to flip left and right hands on bindings. Applications that support this must add supports_dominant_hand_setting to true in their action manifest file.\n* Added GetComponentStateForBinding. This allows applications to get the render model component transform for any component on a render model for a set of input bindings.\n* Added GetBindingVariant. This allows applications to provide multiple binding files for a controller type and determine which of them the user currently has selected. The value returned here is the variant field from the options block in the binding JSON file.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5759046]\n"
    },
    {
      "commit": "39205f6b281a6131d1373d0217c1ab9ed19735ea",
      "tree": "94610f937f18b0efa9969b4eb46bbef8841aca99",
      "parents": [
        "176b58f6ccaaae3e9d14efaf612c50b72ec5da76"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Sat Dec 28 00:08:24 2019"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremy.selan@gmail.com",
        "time": "Tue Jan 07 02:01:42 2020"
      },
      "message": "**OpenVR SDK 1.9.16**\n\nIVRDriverInput:\n\n* Added TrackedControllerRole_Stylus, which allows a device to appear as /user/stylus in the binding system.\n\nIVRSettings:\n\n* Removed sync function. Saving of settings is controlled automatically by the system now. All existing calls to Sync can be deleted. Calls to sync using old APIs do nothing.\n\nIVRCompositor:\n\n* Added the ability for apps to skin the construct during loading transitions using a single model (limit 65k vertices) and a single texture (rendered unlit).  See https://github.com/ValveSoftware/openvr/wiki/Compositor-Skinning for details.\n\nIVROverlay:\n\n* Added transform types for dashboard tabs and dashboard thumbs. These no longer use absolute transforms, so they no longer have getters for their transforms.\n* Added SetOverlayTransformCursor, which will set an overlay\u0027s transform to \"cursor\", which means it will be centered around its hotspot and automatically positioned by the laser mouse system.\n* Added GetOverlayTransformCursor in case an application needs to read back the cursor hotspot of a cursor.\n* Added SetOverlayCursor, which allows an overlay to specify which cursor overlay should be used whenever the laser mouse is pointed at that overlay. The desktop overlay uses this to show custom cursors based on context.\n* Added SetOverlayCursorPositionOverride, which lets an overlay set the position to show its cursor at a position that is independent from where the laser mouse is pointing. The desktop overlay uses this to allow the physical mouse to override the laser mouse.\n* Added ClearOverlayCursorPositionOverride, which clears any cursor position override on the overlay and returns it to using the laser mouse position.\n* Added TriggerLaserMouseHapticVibration, which will trigger a haptic vibration on the laser mouse device in the context of a particular transform.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5586053]\n"
    },
    {
      "commit": "176b58f6ccaaae3e9d14efaf612c50b72ec5da76",
      "tree": "5d57ca417f70426ad193ff53a7813be39946a201",
      "parents": [
        "4864a545d03a831c4e37958e15321e1f9aee4a17"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Wed Nov 06 03:14:43 2019"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Wed Nov 06 03:14:43 2019"
      },
      "message": "**OpenVR SDK 1.8.19**\n\nProperties:\n* Added Prop_DashboardScale_Float.  Each headset has the opportunity to provide a scale for \u0027comfortable dashboard UI legibility\u0027.  For reference, Vive is 1.0 scale and Index is 0.75 scale.\n* Added Prop_IpdUIRangeMinMeters_Float, Prop_IpdUIRangeMaxMeters_Float to control the IPD user interface range, in-headset.\n* Added Prop_Audio_DefaultPlaybackDeviceId_String, Prop_Audio_DefaultRecordingDeviceId_String for HMDs to provide identifiers for associated audio playback and recording devices. On Windows these are Endpoint ID Strings.\n* Added Prop_Audio_DefaultPlaybackDeviceVolume_Float for HMDs to specify a default volume level which will be set the first time the HMDs associated audio playback device is selected. Prop_Audio_DefaultPlaybackDeviceId_String must also be set. The volume range is 0 to 1.\n\nIVRApplications:\n* Added GetSceneApplicationState(), which returns the running application state ( None, Starting, Quitting, Running, etc).  See VREvent_SceneApplicationStateChanged\n* Removed GetTransitionState()\n* Removed IsQuitUserPromptRequested()\n\nIVRSystem:\n* Removed AcknowledgeQuit_UserPrompt().   \"Prompt user on quit\" functionality is no longer supported.\n\nIVROverlay:\n* Added VROverlayFlags_HideLaserIntersection - This causes the laser mouse to not draw the intersection blob for this overlay. The overlay is responsible for drawing its own cursor, if appropriate.\n* Added support for rendering overlays as gravity aligned curved surfaces. See new Set/GetOverlayCurvature definitions for details.\n* Removed gamepad support in overlays. This includes GetGamepadFocusOverlay(), SetGamepadFocusOverlay(), SetOverlayNeighbor(), and MoveGamepadFocusToNeighbor(). Going forward gamepads will be supported via lasermouse instead of with these custom calls. \n\nIVRInput:\n* Added OpenBindingUI - This function opens the binding user interface.\n\nEvents:\n* Added VREvent_SceneApplicationStateChanged\n* Removed VREvent_SceneFocusLost, VREvent_SceneFocusGained, VREvent_SceneApplicationSecondaryRenderingStarted, VREvent_ApplicationTransition{*}\n* Removed VREvent_QuitAborted_UserPrompt\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5469045]\n"
    },
    {
      "commit": "4864a545d03a831c4e37958e15321e1f9aee4a17",
      "tree": "95df7f213a67e471c555666a6bdeaea54ab0465b",
      "parents": [
        "5aa6c5f0f6520c59c4dce124541ecc62604fd7a5"
      ],
      "author": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Tue Oct 08 22:40:26 2019"
      },
      "committer": {
        "name": "Charles Lohr",
        "email": "charlesl@valvesoftware.com",
        "time": "Tue Oct 08 22:40:26 2019"
      },
      "message": "Fix Public API Sample for Cameras in 1.7.15\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5401956]\n"
    },
    {
      "commit": "5aa6c5f0f6520c59c4dce124541ecc62604fd7a5",
      "tree": "19a93588b03120805b3e7d1fe76e0aa0ccd627bc",
      "parents": [
        "52065df3d6f3af96300dac98cdf7397f26abfcd7"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Sep 17 01:08:17 2019"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Sep 17 01:08:17 2019"
      },
      "message": "**OpenVR SDK 1.7.15**\n\nEvents:\n* VREvent_Compositor_MirrorWindowShown and VREvent_Compositor_MirrorWindowHidden are no longer supported and have been removed.\n\nIVRApplications:\n* Added `VRApplicationProperty_IsHidden_Bool`, which is true for applications which the user has chosen to hide in their Steam library.\n\nIVRCompositor:\n* Disabled the following functions: `ShowMirrorWindow()`, `HideMirrorWindow()`, and `IsMirrorWindowVisible()`. These are no longer support with the new VR View window.\n\nIVROverlay:\n* Removed support for so-called \"high quality\" overlays, along with the functions that create them. These overlays never supported laser mouse interaction, were unable to act as dashboard overlays, and generally didn\u0027t play well with the rest of SteamVR. This approach to rendering overlays also didn\u0027t scale to modern displays. Any existing apps that still use the APIs in old versions of the SDK will fall back to being rendered as standard overlays.\n\nIVRTrackedCamera:\n* Added support for setting which tracking universe poses are returned in. Set the camera tracking universe with `SetCameraTrackingSpace(...)` and retrieve the current tracking universe with `GetCameraTrackingSpace(...)`. The camera tracking universe defaults to standing.\n\nDriver Interface:\n* Added support for overriding HMD properties from display redirect drivers. Any properties written to the ` k_ulDisplayRedirectContainer` property container will be read instead of the properties on the HMD itself. This container is only valid after Activate has been called on a display redirect device. \n* Created an optional Prop_NamedIconPathDeviceStandbyAlert_String that drivers can use to declare a device icon for a combination of standby + alert states. It\u0027s recommended to visually be a combination of the Prop_NamedIconPathDeviceReadyAlert_String and Prop_NamedIconPathDeviceStandby_String icons.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5356236]\n"
    },
    {
      "commit": "52065df3d6f3af96300dac98cdf7397f26abfcd7",
      "tree": "e12890fcf7f3cb0d6c210753b7a899b9846fd167",
      "parents": [
        "d9cffe2ff87bf0bac69b56bcf6fb60652a9d4009"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Aug 06 00:55:31 2019"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Aug 06 00:55:31 2019"
      },
      "message": "Fixed issue with driver sample not compiling after a 1.6.10 driver interface change.\n\nhttps://github.com/ValveSoftware/openvr/pull/1170\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5275932]\n"
    },
    {
      "commit": "d9cffe2ff87bf0bac69b56bcf6fb60652a9d4009",
      "tree": "3f336dfa1daaae03a50ec3c0ca5eb968cdd62672",
      "parents": [
        "cdaf2b330c8df58986391b253cd8f04328139823"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Aug 02 20:56:44 2019"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Aug 02 20:56:44 2019"
      },
      "message": "OpenVR SDK 1.6.10\n\nIVRSystem:\n* Added GetAppContainerFilePaths  Call this function to get a semicolon-delimited list of file paths that any app container that intends to act as a SteamVR application will need access to.\n* Added GetRuntimeVersion  This returns the version of the SteamVR runtime as a string.\n\nIVROverlay:\n* VROverlayFlags_ProtectedContent  This flag prevents the overlay in question from being readable by any OpenVR SDK, and prevents it from showing up in the overlay viewer. \n\nCVRPropertyHelpers:\n* Added getters and setters for 2, 3, and 4 element vectors\n\nDriver Interface:\n* Added IVRServerDriverHost::GetFrameTimings, which allows drivers to retrieve frame timing data\n* Added tracked device class to IVRWatchdogHost::WatchdogWakeUp  This allows more precise logging of how the user caused SteamVR to wake up from hardware activity.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5271985]\n"
    },
    {
      "commit": "cdaf2b330c8df58986391b253cd8f04328139823",
      "tree": "b0f424c30e5037312bbcc59c68271cff667267a5",
      "parents": [
        "02bc73b9bcfe9cc2d2802bd5fdc91f724de8ef10"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jul 05 17:35:49 2019"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jul 05 17:35:49 2019"
      },
      "message": "OpenVR SDK 1.5.17\n\nProperties:\n* Deprecated Prop_DoNotApplyPrediction_Bool. Drivers should provide poses with zero velocity instead.\n* Added Prop_DriverProvidedChaperoneVisibility_Bool  Drivers that set Prop_DriverProvidedChaperonePath_String can also set this property to indicate when the driver provided chaperone is visible or not visible.\n* Added Prop_HmdTrackingStyle_Int32 - Drivers should set this to an EHmdTrackingStyle value to control what message is shown to users when the HMD isn\u0027t tracking.\n\nAdd a per-driver loadPriority (higher is earlier loading) to control the order that we check drivers for available HMDs. The default loadPriority is 0. Drivers can set a different default in resources/settings/default.vrsettings. The user can override those settings in their personal steam/config/steamvr.vrsettings file. Drivers with the same priority continue to be loaded in alphabetical order as before.\n\nIVRDriverManager interface:\n* Added IsEnabled, which returns true if the driver is enabled.\n\nIVRInput interface:\n* Added GetActionBindingInfo - This function allows the caller to learn details about exactly how an action is bound, including what input source the binding is for, what mode on that source, and what slot on that mode. For example, a dpad binding to a trackpad would be \"/input/trackpad\", \"dpad\", and \"north\".\n\nIVRDebug Interface:\n* Initial version of IVRDebug, an interface intended to collect SteamVR debugging functionality. It currently provides methods to interact with the VR Profiler and the driver debug interface.\n* Added EmitVrProfilerEvent - Applications can use this method to emit a discrete event to the VR Profiler.\n* Added BeginVrProfilerEvent/FinishVrProfilerEvent - Applications can use this pair of functions to create a duration based VR Profiler event. The methods signal the beginning and the end of the event respectively.\n* Added DriverDebugRequest - Migrated this function from IVRSystem to IVRDebug.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5214411]\n"
    },
    {
      "commit": "02bc73b9bcfe9cc2d2802bd5fdc91f724de8ef10",
      "tree": "17a0fbbefadd4d5e5f404a4af2baec1af445bb0c",
      "parents": [
        "b72abcebff7e6c6c70ce8ac8f6a09b70d44397e2"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu May 23 22:03:27 2019"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu May 23 22:03:27 2019"
      },
      "message": "OpenVR SDK 1.4.18\n\nGeneral:\n* vr::VR_GetRunTimePath now takes a buffer to fill with the returned path. This form of the function is now thread-safe.\n\nDriver Interface:\n*  Prop_DashboardLayoutPathName_String - specified the name of the dashboard layout control file. Allows per-HMD control over settings like dashboard distance, etc.\n\nHelloVR Sample:\n* Added an example of generic bindings that will work ifno device-specific bindings are specified.\n\nValve Index Controller:\n* Renamed some references from Knuckles to Index Controller\n\nIVRChaperoneSetup:\n* Added RoomSetupStarting - This fires an event that the tracking system can use to know room setup is about to begin. This lets the tracking system make any last minute adjustments that should be incorporated into the new setup.  If the user is adjusting live in HMD using a tweak tool, keep in mind that calling this might cause the user to see the room jump.\n\nIVRCompositor: \n* Added IsMotionSmoothingSupported - This returns true if Motion Smoothing is supported by the current hardware.\n* Added IsCurrentSceneFocusAppLoading - This indicates whether or not the current scene focus app is currently loading.  The return value is inferred from its use of FadeGrid to explicitly fade to the compositor to cover up the fact that it cannot render at a sustained full framerate during this time.\n\nIVRInput:\n* Split GetPoseActionData into two functions\n  * GetPoseActionRelativeToNow - returns the data for the pose action for any time, given a relative number of seconds.\n  * GetPoseActionDataForNextFrame - returns the data for the pose action that matches the application\u0027s most recent call to WaitGetPoses\n* Added a eSummaryType argument to GetSkeletalSummaryData - This allows applications to specify how much filtering should be applied to the data:\n  * VRSummaryType_FromAnimation - The data should match the animated transforms in the skeleton transforms. This data will probably be smoothed and may be more latent\n  * VRSummaryType_FromDevice - The data should be the unprocessed values from the device when available. This data may include more jitter but may be provided with less latency.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5123272]\n"
    },
    {
      "commit": "b72abcebff7e6c6c70ce8ac8f6a09b70d44397e2",
      "tree": "71f08885ba0c140a62ff196fbde3979f0ac6ab29",
      "parents": [
        "823135df1783009cb468d0fc4190816254f7687d"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Mar 28 15:34:27 2019"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Mar 28 15:34:27 2019"
      },
      "message": "OpenVR SDK 1.3.22\n\nGeneral:\n* Removed DLL exports in the static library version of openvr_api.dll\n\nDriver Interface:\n* Added Prop_AdditionalSystemReportData_String, which allows drivers to put additional information about its devices in the system report.\n* Added VREvent_SystemReport_Started, which gives drivers the opportunity to log before a system report is generated.\n* Added IVRServerDriverHost::RequestRestart, which allows a driver to request a restart with a message that will be shown to the user, and an optional executable to run.\n\nIVROverlay:\n* Added viewportscale to scroll events. This is the overlay\u0027s vertical size relative to the overlay height.\n\nIVRInput:\n* Added IsUsingLegacyInput, which returns true if the application is using legacy input.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 5016734]\n"
    },
    {
      "commit": "823135df1783009cb468d0fc4190816254f7687d",
      "tree": "d0c64b95bacd960c26f05b4fe1a85cfe15cc6286",
      "parents": [
        "fc60d2da07de6cf906ca90ad0cf5f6a88ca85601"
      ],
      "author": {
        "name": "Nat Brown",
        "email": "natb@valvesoftware.com",
        "time": "Wed Jan 30 23:41:38 2019"
      },
      "committer": {
        "name": "Nat Brown",
        "email": "natb@valvesoftware.com",
        "time": "Wed Jan 30 23:41:38 2019"
      },
      "message": "OpenVR SDK v1.2.10:\n\nGeneral:\n * Added new, more specific error messages for many compositor startup failures.\n * Fix for IVRCompositor.GetFrameTimings C# binding (https://github.com/ValveSoftware/openvr/issues/1001)\n * Added VRNotifications and VRIOBuffer C# accessors.\n\nEvent and Overlay changes:\n * Scroll events have been split into two types. The first, VREvent_ScrollDiscrete, is meant for applications that are tuned to accept primarily detented mousewheel events, which replaces the previous VREvent_Scroll event. The second, VREvent_ScrollSmooth, is for applications that are tuned for more touchscreen-like, analog scrolling.\n * VROverlayFlags have been updated to allow overlays to indicate their preferred scroll event type. The VROverlayFlags_SendVRDiscreteScrollEvents flag renames the VROverlayFlags_SendVRScrollEvents flag, and the overlay will receive VREvent_ScrollDiscrete events when this flag is set. The VROverlayFlags_SendVRSmoothScrollEvents flag is added, and the overlay\u0027s owning application will receive VREvent_ScrollSmooth events when this flag is set.\n * VREvent_Input_BindingsUpdated is sent when a user has updated controller bindings using the system input binding UI.\n\nIVRIOBuffer:\n * Adds ability for writers to detect if an IOBuffer has readers (IVRIOBuffer::HasReaders), to avoid potentially expensive writing work\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4926575]\n"
    },
    {
      "commit": "fc60d2da07de6cf906ca90ad0cf5f6a88ca85601",
      "tree": "88729f5ff4e36babdca0894fbd86e29b39d4bad4",
      "parents": [
        "64fc05966a109543a1e191a45e1ab3a25a651211"
      ],
      "author": {
        "name": "Nat Brown",
        "email": "natb@valvesoftware.com",
        "time": "Tue Jan 29 23:25:26 2019"
      },
      "committer": {
        "name": "Nat Brown",
        "email": "natb@valvesoftware.com",
        "time": "Tue Jan 29 23:25:26 2019"
      },
      "message": "Merging using vr_steamvr_rel_to_sdk_release to create OpenVR SDK v1.2.10\n\nGeneral:\n * Added new, more specific error messages for many compositor startup failures.\n * Fix for IVRCompositor.GetFrameTimings C# binding (https://github.com/ValveSoftware/openvr/issues/1001)\n\nEvent and Overlay changes:\n * Scroll events have been split into two types. The first, VREvent_ScrollDiscrete, is meant for applications that are tuned to accept primarily detented mousewheel events, which replaces the previous VREvent_Scroll event. The second, VREvent_ScrollSmooth, is for applications that are tuned for more touchscreen-like, analog scrolling.\n * VROverlayFlags have been updated to allow overlays to indicate their preferred scroll event type. The VROverlayFlags_SendVRDiscreteScrollEvents flag renames the VROverlayFlags_SendVRScrollEvents flag, and the overlay will receive VREvent_ScrollDiscrete events when this flag is set. The VROverlayFlags_SendVRSmoothScrollEvents flag is added, and the overlay\u0027s owning application will receive VREvent_ScrollSmooth events when this flag is set.\n * VREvent_Input_BindingsUpdated is sent when a user has updated controller bindings using the system input binding UI.\n\nIVRIOBuffer:\n * Adds ability for writers to detect if an IOBuffer has readers (IVRIOBuffer::HasReaders), to avoid potentially expensive writing work\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4924548]\n"
    },
    {
      "commit": "64fc05966a109543a1e191a45e1ab3a25a651211",
      "tree": "b5b4c150c09e4ccdb693860092db1a10d89de165",
      "parents": [
        "25d2b814afa76e5a482638a78138da47ba177599"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Nov 27 20:14:43 2018"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Nov 27 20:14:43 2018"
      },
      "message": "OpenVR SDK 1.1.3b:\n\n* Fixed issue with EVRSkeletalTrackingLevel not being defined in openvr_driver.h\n\nFixes https://github.com/ValveSoftware/openvr/issues/947\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4837752]\n"
    },
    {
      "commit": "25d2b814afa76e5a482638a78138da47ba177599",
      "tree": "0cf1c1c3ff7d39986bdf04a0dbee70c21ec16f05",
      "parents": [
        "1fb1030f2ac238456dca7615a4408fb2bb42afb6"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Nov 27 16:54:42 2018"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Nov 27 16:54:42 2018"
      },
      "message": "OpenVR SDK Update 1.1.3\nGeneral:\n* Added required SteamVR version number to the header file.\n\nIVRCompositor:\n* New VRCompositor_FrameTiming ReprojectionFlag: VRCompositor_ReprojectionMotion.  This flag will be set for application frames where motion smoothing was applied at least one of the times it was displayed.\n* New interface IsMotionSmoothingEnabled added to determine if that user has enabled motion smoothing or not.\n\nIVRChaperone:\n* Added VREvent_ChaperoneFlushCache, which is sent when the application should reload any cached data they loaded from the chaperone API. This event indicates the user\u0027s current chaperone settings have changed. \n* The VREvent_ChaperoneDataHasChanged event will no longer be sent, and IVRChaperone::ReloadInfo no longer has any effect.\n\nIVRChaperoneSetup:\n* Removed some unimplemented functions:\n * SetWorkingCollisionBoundsTagsInfo\n * GetLiveCollisionBoundsTagsInfo\n * SetWorkingPhysicalBoundsInfo\n * GetLivePhysicalBoundsInfo\n* Added ShowWorkingSetPreview/HideWorkingSetPreview, which will cause the application\u0027s current working set to show as the chaperone bounds rendered by the compositor. Unless your application is modifying the user\u0027s chaperone bounds, you won\u0027t need to call these functions. They are independent of bounds turning on and off based on how close the user is to them.\n\nIVROverlay:\n* Added flag VROverlayFlags_MakeOverlaysInteractiveIfVisible. If this flag is set on an overlay and that overlay is visible, SteamVR will be placed into laser mouse mode. This will prevent the scene application from receiving any input, so use this flag carefully.\n* Changed SetOverlayDualAnalogTransform to take a pointer to better support the C API.\n\nIVRTrackedCamera: \n * for headsets (like Vive Pro) which include multiple camera images in a single video stream, GetCameraIntrinsics and GetCameraProjection now support a uint32_t nCameraIndex parameter to get data about the specific camera.\n\nIVRInput:\n* Added an argument to GetOriginLocalizedName to allow the caller to specify which parts of the name they want in the returned string. The possible values are:\n * VRInputString_Hand - Which hand the origin is in. E.g. \"Left Hand\"\n * VRInputString_ControllerType - What kind of controller the user has in that hand. E.g. \"Vive Controller\"\n * VRInputString_InputSource - What part of that controller is the origin. E.g. \"Trackpad\"\n * VRInputString_All - All of the above. E.g. \"Left Hand Vive Controller Trackpad\"\n* Skeletal Input:\n * Added GetBoneCount to return the number of bones in the skeleton associated with an action\n * Added GetBoneHierarchy which returns the index of each bone\u0027s parent in a user-provided array\n * Added GetBoneName to retrieve the name of the bones in the skeleton\n * Added GetSkeletalReferenceTransforms to retrieve the transforms for several specific hand skeleton poses:\n   * Bind Pose\n   * Open Hand\n   * Fist\n   * Grip Limit, which is the shape of the hand when closed around the controller\n * Added GetSkeletalTrackingLevel to retrieve an estimate of the level of detail with which the controller associated with an action can track actual the movement of the user\u0027s body.  The levels are:\n   * Estimated: body part location can\u0027t be directly determined by the device. Any skeletal pose provided by the device is estimated by assuming the position required to active buttons, triggers, joysticks, or other input sensors.  e.g. Vive Controller, Gamepad\n   * Partial: body part location can be measured directly but with fewer degrees of freedom than the actual body part. Certain body part positions may be unmeasured by the device and estimated from other input data. e.g. Knuckles, gloves that only measure finger curl\n   * Full: body part location can be measured directly throughout the entire range of motion of the body part.  e.g. Mocap suit for the full body, gloves that measure rotation of each finger segment\n * Added GetSkeletalSummaryData which returns meta data about the current pose of the hand such as finger curl and splay\n * Removed ulRestrictToDevice as a parameter from all skeletal input functions \n\nDriver API:\n\n* Added TrackedControllerRole_Treadmill, which lets a driver specify that a device is intended to function as a treadmill. This opts the device out of hand selection. The new input path /user/treadmill is automatically assigned to the first treadmill device to activate.\n\nIVRCameraComponent:\n  * CVS_FORMAT_BAYER16BG for cameras which support delivering raw sensor data\n  * Added camera index to GetCameraDistortion, GetCameraProjection, and GetCameraIntrinsics to support multiple cameras on the same device (see also IVRTrackedCamera)\n  * Added the ability for cameras to return one of a small set of programmatic distortion function types and function parameters in addition to or instead of UV-sampling distortion through GetCameraDistortion. See EVRDistortionFunctionType and IVRCameraComponent::GetCameraIntrinsics and refer to OpenCV camera calibration and undistortion documentation.\n\nIVRDriverInput:\n* Added parameter to CreateSkeletonComponent to allow the driver to specify the skeletal tracking level that the controller supports\n\nSamples:\n* Fixed texture corruption bug with hellovr_vulkan when controller is turned on after starting the application.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4837234]\n"
    },
    {
      "commit": "1fb1030f2ac238456dca7615a4408fb2bb42afb6",
      "tree": "8bfdcb8c55cb2d4eb27acf0a6e79a364c6fa0c7d",
      "parents": [
        "6aacebd1246592d9911439d5abd0c657b8948ab0"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Oct 16 01:14:19 2018"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Oct 16 01:14:19 2018"
      },
      "message": "OpenVR SDK 1.0.17\n\nIVRProperties:\n* Prop_CameraStreamFormat_Int32 - value from the openvr_driver.h ECameraVideoStreamFormat indicating the expected delivery format of the device\n* TrackedProp_IPCReadFailure\n\nIVRTrackedCamera:\n* 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.\n* CVS_FORMAT_YUYV16 - new opener_driver.h ECameraVideoStreamFormat value indicating 16-bit YUYV raw image encoding\n\nOpenVR C API:\n * Fixed cNewInput and rchRenderModelComponentName having an incorrect type\n\nIVRCompositor FrameTiming:\n* 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.\n* Added m_nNumVSyncsReadyForUse for tracking how long each frame took to render.\n* 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.\n* See https://developer.valvesoftware.com/wiki/SteamVR/Frame_Timing for more details.\n\nDriver API:\n* Added TrackingResult_Fallback_RotationOnly, which drivers can return if they have lost positional tracking but wish to still provide rotation-only tracking.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4759625]\n"
    },
    {
      "commit": "6aacebd1246592d9911439d5abd0c657b8948ab0",
      "tree": "00f5f62279e89727ffcbc3ed74b0a217899d8513",
      "parents": [
        "60eb187801956ad277f1cae6680e3a410ee0873b"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jul 27 19:08:16 2018"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jul 27 19:08:16 2018"
      },
      "message": "OpenVR SDK 1.0.16\n\nSteamVR Input (IVRInput/IVRDriverInput):\n\n* 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\n* Added boneCount member InputSkeletalActionData struct.  This lets users know how many bones are in the target skeleton by calling GetSkeletalActionData.  \n* 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.  \n* Added an input example to the sample driver. This includes an input profile, localized strings, icons, etc.\n* 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.\n* 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\u0027re bound to the same input source.\n\nIVRRenderModels:\n\n* 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.\n\nIVRSpatialAnchors:\n\n* 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\u0027t 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.\n\nIVRVirtualDisplay:\n\n* Added the ability for DisplayRedirect devices to disable mura correction in the compositor (set Prop_DriverRequestedMuraCorrectionMode_Int32 to EVRMuraCorrectionMode_NoCorrection).\n* 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.\n\nIVRCompositorPluginProvider:\n\n* Initial support for loading SteamVR drivers in the compositor process.  Currently only supports IVRVirtualDisplay components in order to provide async reprojection support.\n\nNew texture submission formats for macOS 10.14:\n\n * 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.\n * 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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4637165]\n"
    },
    {
      "commit": "60eb187801956ad277f1cae6680e3a410ee0873b",
      "tree": "887ba0bd20ec40a673c608cc4a6ed41c6febcfe6",
      "parents": [
        "7027f517983ccaae7d972b7735891bb8244e59fb"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri May 11 18:56:31 2018"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri May 11 18:56:31 2018"
      },
      "message": "OpenVR SDK 1.0.15\n\nAdded support for the new SteamVR Input system. Please see the documentation for details:\n\n* https://github.com/ValveSoftware/openvr/wiki/SteamVR-Input\n\n\nAdded support for tracked devices to provide access to their raw inertial measurement unit (IMU) data stream. Please see the documentation for details:\n\n* https://github.com/ValveSoftware/openvr/wiki/ImuSample_t\n\n\nThe 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:\n\n* https://github.com/ValveSoftware/openvr/wiki/IVRIOBuffer\n\n\nA new section in the steamvr.vrsettings file supports tracked devices overriding the tracking of other devices. Please see the documentation for details:\n\n* https://github.com/ValveSoftware/openvr/wiki/TrackingOverrides\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4505287]\n"
    },
    {
      "commit": "7027f517983ccaae7d972b7735891bb8244e59fb",
      "tree": "62c35c3380f3b89725bc4e92748b8baeb5a5c445",
      "parents": [
        "d35c04ca3d7ddb762afa4a1c6c4a9d5de992cda7"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Thu Apr 05 22:20:38 2018"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Thu Apr 05 22:20:38 2018"
      },
      "message": "**OpenVR SDK 1.0.14**\n\n\nTracked Camera\n\n* Added property Prop_NumCameras_Int32 for drivers to specify the number of cameras a given headset provides.\n* Added property Prop_CameraFrameLayout_Int32 for drivers to specify the frame layout of images delivered (use provided EVRTrackedCameraFrameLayout values).\n\n\nIVRVirtualDisplay\n\n* Added vsync mode, frame id, and vsync timing data to Present call.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4455565]\n"
    },
    {
      "commit": "d35c04ca3d7ddb762afa4a1c6c4a9d5de992cda7",
      "tree": "6775a7ca40786f4fd4d79d133b445dfbf00ec27a",
      "parents": [
        "53c417bb16cee003cd949254a2aa00714046efbd"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Feb 15 19:32:26 2018"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Feb 15 19:32:26 2018"
      },
      "message": "**OpenVR SDK 1.0.13**\n\n\nGeneral\n\n* 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.\n\n\nIVROverlay\n\n* 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.\n\n\nDriver Interface\n\n* Added TrackedControllerRole_OptOut. Set a controller to this if you want that controller to be ignored for the purposes of right/left hand selection.\n* 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.\n* 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.\n* Added Prop_MinimumIpdStepMeters_Float. Set this to the minimum IPD change in meters that should cause the IPD UI to be shown.\n* IVRDriverDirectModeComponent.CreateSwapTextureSet added the ability to specify sample count.\n* IVRDriverDirectModeComponent.SubmitLayer \n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4366099]\n"
    },
    {
      "commit": "53c417bb16cee003cd949254a2aa00714046efbd",
      "tree": "a7ba0051bb1901d1f72e511111d11897ef47ea29",
      "parents": [
        "167e26e4b9b352614c5f3a83a8434b185f63ed0f"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jan 09 17:41:39 2018"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jan 09 17:41:39 2018"
      },
      "message": "**OpenVR SDK 1.0.12**\n\nIVRSystem\n* Removed the concept of \"input focus\" and all the associated APIs.\n* 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:\n * IsInputAvailable() -- This will return true if the application is receiving input events. For instance, it will return false when the SteamVR dashboard is visible.\n * IsSteamVRDrawingControllers() -- This will return true if SteamVR is drawing the user\u0027s actual controllers for any reason. It will be true if the dashboard is visible or if the SteamVR keyboard is visible over the application.\n * ShouldApplicationPause() -- This will return true is applications should pause (where appropriate.) It generally indicates that the user\u0027s attention is being taken by something like the SteamVR dashboard. Multiplayer games and other applications where \"pause\" is unavailable can ignore this.\n * 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.\nIVRCompositor\n* Added ability to pass depth info for scene textures.  Use VRTextureWithDepth_t (or VRTextureWithPoseAndDepth_t) and pass Submit_TextureWithDepth flag to Submit.\n\n\nDriver API\n* Replaced the API that drivers use to report input (button, trackpad, joystick, etc.) state. See (`IVRDriverInput` documentation)[ https://github.com/ValveSoftware/openvr/wiki/IVRDriverInput-Overview] for more information.\n* 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.\n* 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.\n* 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.\n* 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).\n* 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).\n\nIVROverlay\n* Removed HandleControllerOverlayInteractionAsMouse. Overlay applications should use the mouse overlay input method instead.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4305765]\n"
    },
    {
      "commit": "167e26e4b9b352614c5f3a83a8434b185f63ed0f",
      "tree": "924a3dec077113ba1d5ec6c475fa3835a1f7dd54",
      "parents": [
        "f43cc0ac181e2245048e8be094dfc3e86284a44c"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Dec 05 22:55:57 2017"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Dec 05 22:55:57 2017"
      },
      "message": "OpenVR SDK 1.0.11\n\nGeneral:\n- k_unMaxTrackedDeviceCount is now 64 to support larger numbers of trackers.\n\nmacOS:\n- resolves memory leaks with caller/callee MRC/ARC mismatches - consider re-integrating if you bundle or build libopenvr_api from source\n\nIVRCompositor:\n\n- 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.\n\nDriver Interface:\n- Added several new driver properties to support better status UI layout and device-specific default idle icons for custom headset and tracked controller drivers:\n- 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.\n- 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.\n- Prop_NamedIconPathControllerLeftDeviceOff_String - specifies the placeholder inactive icon for the expected \"left\" controller when no controller has yet been found or activated.\n- Prop_NamedIconPathControllerRightDeviceOff_String - specifies the placeholder inactive icon for the expected \"right\" controller when no controller has yet been found or activated.\n- 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.\n\nIVRDriverDirectModeComponent:\n- 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\u0027s compositor knows about.\n- 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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4268903]\n"
    },
    {
      "commit": "f43cc0ac181e2245048e8be094dfc3e86284a44c",
      "tree": "8f465c754efb60b2c3479178ebc3b1062bc6b1da",
      "parents": [
        "ebdea152f8aac77e9a6db29682b81d762159df7e"
      ],
      "author": {
        "name": "Dan Ginsburg",
        "email": "dang@valvesoftware.com",
        "time": "Fri Nov 17 14:46:32 2017"
      },
      "committer": {
        "name": "Dan Ginsburg",
        "email": "dang@valvesoftware.com",
        "time": "Fri Nov 17 14:46:32 2017"
      },
      "message": "Merging\n\n//vr/steamvr/main/public/sdk/samples/hellovr_vulkan/hellovr_vulkan_main.cpp\n\nto //vr/steamvr/sdk_release/samples/hellovr_vulkan/hellovr_vulkan_main.cpp\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4245963]\n"
    },
    {
      "commit": "ebdea152f8aac77e9a6db29682b81d762159df7e",
      "tree": "5f5701085d0d680cb10286e7a780ce556582f2d8",
      "parents": [
        "5d0574bf6473130d25dd296ad30206ccd148590b"
      ],
      "author": {
        "name": "Nat Brown",
        "email": "natb@valvesoftware.com",
        "time": "Fri Sep 01 18:09:43 2017"
      },
      "committer": {
        "name": "Nat Brown",
        "email": "natb@valvesoftware.com",
        "time": "Fri Sep 01 18:09:43 2017"
      },
      "message": "OpenVR 1.0.10\n\nIVRCompositor:\n- New IVRCompositor::SetExplicitTimingMode and IVRCompositor::SubmitExplicitTimingData for DX12 (https://github.com/ValveSoftware/openvr/wiki/DirectX12#explicit-timing) and Vulkan (https://github.com/ValveSoftware/openvr/wiki/Vulkan#explicit-timing)\n- Adds Submit_TextureWithPose flag and VRTextureWithPose_t structure so applications can specify the pose the texture was rendered for when calling IVRCompositor::Submit \n\nIVROverlay:\n- New IVROverlay::CloseMessageOverlay for closing modal dashboard dialogs the process owns\n\nIVRSystem:\n- Adds context to IVRSystem::GetOutputDevice required to discriminate graphics device in Vulkan\n\nMiscellaneous\n- Fixes crashes under some multithreading circumstances using OpenVR VR_* APIs\n- Updates hellovr_vulkan sample to use IVRSystem::GetOutputDevice\n- Fixes a crash with hellovr_opengl sample under macOS\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4122485]\n"
    },
    {
      "commit": "5d0574bf6473130d25dd296ad30206ccd148590b",
      "tree": "7a83fbb88ebc4c44a46bd7af3cfa2081174e2fda",
      "parents": [
        "bcac1bfbe2be3c1ff37e4f62b8e412fcdf29248e"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Tue Jul 18 20:49:52 2017"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Tue Jul 18 20:49:52 2017"
      },
      "message": "OpenVR SDK 1.0.9\n\nDrivers:\n- 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.\n- 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.\n- Added VREvent_WirelessDisconnect and VREvent_WirelessReconnect events for display redirect drivers to notify the runtime of display connection status.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4059277]\n"
    },
    {
      "commit": "bcac1bfbe2be3c1ff37e4f62b8e412fcdf29248e",
      "tree": "476ccae3c40a328d79cff2f5f4b916a0ae783fd7",
      "parents": [
        "dc860fe405dd93803e55dc662cae590edf6c7cb3"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Tue Jun 13 20:11:41 2017"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Tue Jun 13 20:11:41 2017"
      },
      "message": "OSX sdk changes\n- Adds pre-built OpenVR.framework for macOS support, defaults to universal 32-/64-bit binary building, see src/README\n- corrects macOS framework structure and @rpath of .framework and .dylib binaries. supports building 32-bit-only dylib.\n\nCL3996577, 3996634, 4006665\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4009638]\n"
    },
    {
      "commit": "dc860fe405dd93803e55dc662cae590edf6c7cb3",
      "tree": "681b728981d459c3c83a91fe95b3fd106b162d0d",
      "parents": [
        "b6539291b88eaa65c58c076cafe4eacd0ae2e062"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Tue Jun 13 19:52:38 2017"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Tue Jun 13 19:52:38 2017"
      },
      "message": "OpenVR SDK 1.0.8:\n\nGeneral:\n- Added VRCompositorError_InvalidBounds - This is returned when the application passes texture bounds to Submit that are outside the range of 0.0 to 1.0 or are otherwise invalid.          \n- Added sample programs: hellovr_vulkan and hellovr_dx12.\n\nIVRVirtualDisplay:\n- 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\n\nIVRSystem:\n- 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\u003cMTLDevice\u003e on OSX.\n\nIVRDriverManager:\n- Public API to query installed device drivers. \n\nDrivers: \n- 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.\n- Allow drivers to specify which graphics adapter to use by settings Prop_GraphicsAdapterLuid_Uint64.  This is a LUID on Win32.\n\nMacOS/OSX:\n - 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 https://github.com/ValveSoftware/openvr/issues/543#issuecomment-307637564\n\nCmake Build System (optional):\n - cmake script changes to better support Cygwin\n - supports building universal 32/64 binaries on OSX\n - supports building as a private OSX framework\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 4009583]\n"
    },
    {
      "commit": "b6539291b88eaa65c58c076cafe4eacd0ae2e062",
      "tree": "475d015be4d6d6bc5d4a5b3b7f7fb3d3a17a0eae",
      "parents": [
        "7fa6470f2972970859f2395f1390f6d87d4b0fc3"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon May 01 21:02:33 2017"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon May 01 21:02:33 2017"
      },
      "message": "OpenVR SDK 1.0.7:\n\nGeneral:\n- Updated structure packing to be more consistent across platforms.\n- New property (Prop_SecondsFromPhotonsToVblank_Float) to support rolling illumination displays.\n- New property (Prop_ResourceRoot_String). When present identifies the properly named driver subdir to be used for sourcing resources.\n- New properties which are automatically set based on components a given driver implements.\n  - Prop_HasDisplayComponent_Bool\n  - Prop_HasControllerComponent_Bool\n  - Prop_HasCameraComponent_Bool\n  - Prop_HasDriverDirectModeComponent_Bool\n  - Prop_HasVirtualDisplayComponent_Bool\n\nIVROverlay:\n- Added SetOverlayName method.\n- 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.\n- Added GetOverlayRenderModel accessor.\n- Added SetOverlayTransformOverlayRelative method.  Sets the transform to relative to the transform of the specified overlay.  This overlays visibility will also track the parents visibility.\n- Added GetOverlayTransformOverlayRelative accessor.\n\nIVRServerDriverHost:\n- 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.\n\nIVRVirtualDisplay:\n- New interface drivers can implement to redirect display output.\n- Added new device type (TrackedDeviceClass_DisplayRedirect) for accessories which redirect display output.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3936268]\n"
    },
    {
      "commit": "7fa6470f2972970859f2395f1390f6d87d4b0fc3",
      "tree": "463e5b9c6273881321db4ad4b6ba83c35da78e02",
      "parents": [
        "70acfe9262290ddb789588a7390e5fc60bb20080"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jan 31 01:11:29 2017"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jan 31 01:11:29 2017"
      },
      "message": "Removing the outdated unity plugin from the SDK. This is released in a separate Github repo now.\n\nhttps://github.com/ValveSoftware/steamvr_unity_plugin\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3811843]\n"
    },
    {
      "commit": "70acfe9262290ddb789588a7390e5fc60bb20080",
      "tree": "d0c8312a429fa45016015af7d281a9e4abc1d83c",
      "parents": [
        "b96746068239d5571a4d1ff77577517cc4ca1326"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jan 31 01:10:56 2017"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jan 31 01:10:56 2017"
      },
      "message": "OpenVR SDK 1.0.6:\n\nGeneral:\n* Updated source code and cmake configurations for openvr_api.dll (and dylib/so) for applications that need a static library.\n* Added VREvent_PropertyChanged event, which is sent when any property changes.\n* Added VREvent_PrimaryDashboardDeviceChanged event, which is sent when the user changes the dashboard laser pointer from one controller to another.\n\nIVRCompositor:\n* Added initial support for DirectX 12 and OSX IOSurfaces. Use at your own risk. Forward compatibility is not guaranteed.\n* Added IVRCompositor::ReleaseMirrorTextureD3D11(). Call ReleaseMirrorTextureD3D11 instead of calling Release directly on the texture.\n\nIVRApplications:\n* Added GetCurrentSceneProcessId(), which returns the process ID of the latest process to call VR_Init with the Scene application type.\n\nServer driver Interface:\n* 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.\n* 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:\n VR_INIT_SERVER_DRIVER_CONTEXT( pContext );\n* 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.\n* IVRServerDriverHost::TrackedDeviceAdded now takes all the required values for a new tracked device, including the device class and device driver interface pointer.\n* 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.\n* 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.\n* IServerDriverHost has been renamed to IVRServerDriverHost no longer contains a few functions that are now handled by property setters.\n * GetSettings() is now handled with vr::VRSettings()\n * PhysicalIpdSet() is now handled by setting the Prop_UserIpdMeters_Float property.\n * TrackedDevicePropertiesChanged() is now handled automatically when a property is set.\n * MCImageUpdated() was undocumented and not useful outside the Lighthouse driver. It has been removed.\n\nCVRHiddenAreaHelpers:\n* 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.\n\nIDriverLog:\n* This interface has been renamed to IVRDriverLog\n\nIClientTrackedDeviceProvider:\n* 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:\n * 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\n * GetHiddenAreaMesh is implemented via properties and the CVRHiddenAreaHelpers class. (See above)\n * GetMCImage was undocumented and not useful outside of the Lighthouse driver. It has been removed.\n * Watchdog mode, which allows SteamVR to start automatically on hardware activity, has been moved to a new driver type IVRWatchdogProvider.\n\nIVRWatchdogProvider:\n* This provider is only loaded in app type SteamWatchdog. It monitors the hardware for changes and calls vr::VRWatchdogHost()-\u003eWatchdogWakeUp() if an event occurs that should start SteamVR. This is entirely optional. A driver that doesn\u0027t implement this provider will just not wake up SteamVR on hardware activity.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3811839]\n"
    },
    {
      "commit": "b96746068239d5571a4d1ff77577517cc4ca1326",
      "tree": "7edee87e821fec7fae7ff2ade20a5684fa2ee607",
      "parents": [
        "9d48ccf90d709382a137de9bc429aab5f7cea5de"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon Dec 12 22:05:54 2016"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon Dec 12 22:05:54 2016"
      },
      "message": "updated helloworldoverlay to latest sdk\n\n#335\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3739956]\n"
    },
    {
      "commit": "9d48ccf90d709382a137de9bc429aab5f7cea5de",
      "tree": "90deeca90eacd72e234cdcceea2a1a0734660d89",
      "parents": [
        "84e877f1e099173378759189609b90870f422130"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon Dec 12 20:01:31 2016"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon Dec 12 20:01:31 2016"
      },
      "message": "OpenVR SDK 1.0.5\n\nGeneral: \n* Added final support for submitting Vulkan overlays and eye images. See this document for more information: https://github.com/ValveSoftware/openvr/wiki/Vulkan\n* Added TextureType_Vulkan, VRVulkanTextureData_t\n* Rename EGraphicsAPIConvention -\u003e ETextureType.\n* New synchronous MessageOverlay API. Use IVROverlay::ShowMessageOverlay to display a message with up to four buttons.\n* Added ETrackedDeviceClass, GenericTracker\n* Added ETrackedPropertyError, PermissionDenied\n\nIVRSystem (v15):\n* GetProjectionMatrix signature change, removed EGraphicsAPIConvention eProjType\n\nIVRCompositor (v19):\n* Added GetVulkanInstanceExtensionsRequired, GetVulkanDeviceExtensionsRequired\n\nIVROverlay (v14):\n* Added VROverlayFlags_VisibleInDashboard\n* GetOverlayTexture signature change (includes overlay texture bounds)\n* Added GetOverlayFlags\n* Added ShowMessageOverlay\n\nIVRTrackedCamera (v13):\n* Renamed GetCameraIntrinsics\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3739504]\n"
    },
    {
      "commit": "84e877f1e099173378759189609b90870f422130",
      "tree": "4d0bf61b6454a863ebe553292b9ea51115b8c458",
      "parents": [
        "5bc41e4b55d11dfc8fb4b958a6600aa7f8cee051"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Wed Nov 16 17:37:20 2016"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Wed Nov 16 17:37:20 2016"
      },
      "message": "OpenVR SDK 1.0.4:\n\nGeneral:\n* Further refinement to Vulkan support. Note: the interface is still subject to change.\n\nIVRSystem (v14):\n* ComputeDistortion signature change. Previous version used nan as error signaling. New version returns explicit success.\n* GetHiddenAreaMesh takes optional EHiddenAreaMeshType argument to request Standard, Inverse, or LineLoop mesh.\n\nIVRCompositor (v18):\n* New submit error, VRCompositorError_AlreadySubmitted (if you submit the same eye twice)\n* GetFrameTimings signature change\n* Exposed GetCurrentFadeColor, GetCurrentGridAlpha\n\nIVROverlay (v13):\n* Added SetOverlayIntersectionMask\n\nIServerDriverHost:\n* Added PollNextEvent\n\nIClientDriverHost:\n* Removed GetSettings\n* Added GetGenericInterface\n\nClientTrackedDeviceProvider (v5):\n* GetHiddenAreaMesh takes additional argument, EHiddenAreaMeshType\n\nPull Requests integrated:\n#48 Format README in Markdown\n#58 correct detection of GCC\n#68 helloworldoverlay: Specify c++11 to fix gcc errors\n#76 Remove duplicate, unneeded glBindBuffer call.\n#135 Invert m_mat4HMDPose after assignment copying.\n#191 Document additional methods\n#278 include stdbool.h on non windows platform\n#306 Multi-platform CMake support.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3697868]\n"
    },
    {
      "commit": "5bc41e4b55d11dfc8fb4b958a6600aa7f8cee051",
      "tree": "34c6b4ddf32e30fdf9594a6b578ac216f797befc",
      "parents": [
        "b20b25705d8dd82be221fe68a61db36ae7e2608e"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon Oct 10 23:10:31 2016"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon Oct 10 23:10:31 2016"
      },
      "message": "OpenVR SDK 1.0.3:\n\nGeneral:\n* Added preliminary Vulkan support\n\n* Added Button ID k_EButton_ProximitySensor. Use this for raw access to a proximity sensor if there is one.\n\n* Fixed spelling error in EVROverlayError, \"VROVerlayError_KeyboardAlreadyInUse\"\n\nIVRSettings:\n* 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.\n\n* Added explicit EVRSettingsError for VRSettingsError_JsonParseFailed\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3647965]\n"
    },
    {
      "commit": "b20b25705d8dd82be221fe68a61db36ae7e2608e",
      "tree": "baf91ff7bd62207e521c730089a37ec874e81124",
      "parents": [
        "e1507a27547d22a680153862865d40b90fad8c75"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jul 05 23:53:53 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jul 05 23:53:53 2016"
      },
      "message": "OpenVR SDK 1.0.2:\n\nGeneral:\n* Split several VR_Init error return values out into unique causes.\n* 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.\n* 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.\n\n\nIVRApplications:\n* 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.\n* Added other support functions for mime types.\n\nIVRCompositor:\n* Split out Compositor_FrameTiming\u0027s m_flSceneRenderGpuMs into m_flPreSubmitGpuMs and m_flPostSubmitGpuMs.  Post-Submit time was not previously being recorded.\n\nIVROverlay:\n* Added VROverlayFlags_SortWithNonSceneOverlays. This allows the scene application\u0027s overlays to sort with other non-scene overlays.\n* 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)\n* 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.\n\n\nIVRTrackedCamera:\n* Added accessors to work with tracked camera gpu resources:\n** GetVideoStreamTextureSize\n** GetVideoStreamTextureD3D11\n** GetVideoStreamTextureGL\n** ReleaseVideoStreamTextureGL\n\nIVRResources:\n* New interface to allow access to resource files in the runtime or user-installed drivers.\n\n\nIVRCameraComponent:\n* Simplified interface by removing duplicate functions already provided by properties and deprecating the arbitrary distortion methods.\n\n\nIClientDriverHost:\n* 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.\n\nIClientTrackedDeviceProvider:\n* 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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3525698]\n"
    },
    {
      "commit": "e1507a27547d22a680153862865d40b90fad8c75",
      "tree": "9f36caed31ad2f9cf373e36df011e8ef09c96fbe",
      "parents": [
        "0b0e7fb77d5f9c558be2af1c80d1eacf84d4f603"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jun 10 21:05:52 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jun 10 21:05:52 2016"
      },
      "message": "Added missing IVRScreenshots interface declaration to openvr.h.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3492671]\n"
    },
    {
      "commit": "0b0e7fb77d5f9c558be2af1c80d1eacf84d4f603",
      "tree": "1d94ca16e04049f7cdddd4a35d5844ef335bdc15",
      "parents": [
        "0373425bbab6e4d1c03de28715bee90ebd3943c2"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jun 10 19:13:33 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jun 10 19:13:33 2016"
      },
      "message": "OpenVR SDK 1.0.1:\n\nIVROverlay: \n* Added event VREvent_ImageFailed which is sent when SetOverlayFromFile is called and the file load fails.\n\nIVRScreenshots:\nAdded 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\n\nDriver API:\n* Split Oculus driver direct mode into a new component and out of IVRDisplayComponent. Other drivers generally don\u0027t need to implement this component.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3492473]\n"
    },
    {
      "commit": "0373425bbab6e4d1c03de28715bee90ebd3943c2",
      "tree": "19d0f886e0761efb44a1819caf79714b279b2c74",
      "parents": [
        "063f93e587e80a204233fa088a52ecb493365273"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu May 26 18:24:04 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu May 26 18:24:04 2016"
      },
      "message": "Fixed https://github.com/ValveSoftware/openvr/issues/126\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3469866]\n"
    },
    {
      "commit": "063f93e587e80a204233fa088a52ecb493365273",
      "tree": "b7d2fa043fe93f4aa3f19156f33ffbaa6a2363d8",
      "parents": [
        "35e6fd3e256698df7ec4ac652c50fdb4fd338846"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue May 24 18:20:46 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue May 24 18:20:46 2016"
      },
      "message": "Fixed issues with C# code generation.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3466598]\n"
    },
    {
      "commit": "35e6fd3e256698df7ec4ac652c50fdb4fd338846",
      "tree": "f4aa7081ad63e59f1ec842cb54a8dc19a4c6531f",
      "parents": [
        "01e9d9a99f9d2230854b960846be8056e6cd9f96"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue May 24 00:36:52 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue May 24 00:36:52 2016"
      },
      "message": "SDK Release 0.9.21:\n\nIVRApplications:\n* Added VREvent_ApplicationListUpdated event. This is sent whenever an application manifest is added, removed, or updated.\n\n\nIVRRenderModels:\n* 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\u0027s actual controllers it should reload them after receiving this event.\n* 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.\n* 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.\n* Added GetRenderModelErrorNameFromEnum so applications don\u0027t need to provide their own lookup table to interpret these errors.\n\n\nIVRCompositor:\n* Added cumulative stats tracked per-application and associated accessor.\n* Added interface to access the mirror textures (per-eye).  This is the undistorted view with chaperone and overlays (e.g. dashboard) drawn on top.\n* Added preliminary support for screenshots. This interface is not stable yet and should be ignored for now.\n\n\nIVRTrackedCamera:\n* Exposed the initial version. Provides developers access to poll streaming frames from the HMD front facing camera with the associated tracked HMD pose.\nThe 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.\n\n\nIVROverlay:\n* Added interface to get size of a texture used by an overlay.  This is useful when setting the overlay texture by filename.\n* Added ability to render side-by-side stereo content and panoramas.\n\n\nDriver Interface:\n* IVRCameraComponent is still in a development phase. \n* 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.\n* GetTrackedDeviceDriver and FindTrackedDeviceDriver no longer take an interface version. The caller will expect the version of the interface returned in GetInterfaceVesions()\n\n\nHelloVR sample:\n* Fixed compile error around glDebugMessageCallback that could happen with certain versions of the OpenGL headers.\n* Fixed compile error from LoadRenderModel-\u003eLoadRenderModel_Async name change.\n* Fixed compile error from LoadTexture-\u003eLoadTexture_Async name change.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3465769]\n"
    },
    {
      "commit": "01e9d9a99f9d2230854b960846be8056e6cd9f96",
      "tree": "46cee8448d60aad38b5ae7f9621d4ac05fc8d1dc",
      "parents": [
        "d645dba541b2e0d6f5186e22fc85ce225f2c9f17"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Fri May 06 00:32:00 2016"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Fri May 06 00:32:00 2016"
      },
      "message": "Unity SteamVR Plugin v1.0.9\n\nThis update includes a separate stripped down version of the plugin for Unity 5.4 which now has native integration.  If you download with an older version of Unity 5 you will get a hybrid which includes support for both, and is useful for transitioning.  A version for Unity 4 has also been included which is compatible with 4.6.7p4 and newer.\n\n* Updated to SteamVR runtime v1461626459 and SDK version 0.9.20.\n* Updated workshop texture used in sea of cubes example level to use web page from SteamVR (was previously from Portal).\n* Updated various SDK changes to Unity in 5.4 betas.\n* Added controllerModeState to RenderModel component to control additional features like scrollwheel visibility.\n* RenderModels now respond to model skin changes.\n* Removed OnGUI and associated help text (i.e. \"You may now put on your headset.\" notification) as this was causing unnecessary overhead.\n* Fix to SteamVR_Render not turning back on if all cameras were disabled and then re-enabled.\n* Hooked up SteamVR_Render.pauseRendering in Unity 5.4 native OpenVR integration.\n* Fix for input_focus event sometimes getting sent inappropriately.\n* Fix for timeScale handling.\n* Fix for SteamVR_PlayArea not finding its material in editor in Unity 5.4 due to changes in how Unity handles asset loading.\n* Miscellaneous fixes to reduce hitching when using SteamVR_LoadLevel to handle scene transitions.\n* Hooked up SteamVR_Camera.sceneResolutionScale to Unity 5.4\u0027s native vr integration render target scaling.\n* Forced SteamVR initialization check in SteamVR_Camera.enable (and bail upon failure) in Unity 5.4 (was already doing this in older builds).\n* Better handling of SteamVR_Ears component with old content.\n* Keep legacy head object around in case external components were referencing it (was previously getting deleted in Unity 5.4 as the head motion is now applied to the \"eyes\" object).\n* Miscellaneous fixes for SteamVR_TrackedController and SteamVR_Teleporter.\n* Fixed up Extra scenes SteamVR_TestThrow and SteamVR_TestIK.\n* Added stereo panorama screenshot support to SteamVR_Skybox.\n* Removed use of deprecated UnityEditorInternal.VR.VREditor.InitializeVRPlayerSettingsForBuildTarget(BuildTargetGroup.Standalone);\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3431302]\n"
    },
    {
      "commit": "d645dba541b2e0d6f5186e22fc85ce225f2c9f17",
      "tree": "6ecb0917aaf9877c406caf22ea59a55a65eebcd5",
      "parents": [
        "a6c91ef97302ce2abd852115682fb8726471c67b"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue May 03 23:14:02 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue May 03 23:14:02 2016"
      },
      "message": "OpenVR SDK 0.9.20:\nGeneral:\n* Added VREvent_InputFocusChanged - This event is sent whenever input focus changes from one process to another.\n* Added VREvent_AudioSettingsHaveChanged - This event is sent whenever the user changes audio settings.\n* Added VREvent_ReprojectionSettingHasChanged - This event is sent when the user turns interleaved reprojection on or off.\n* Added VRInitError_Compositor_FirmwareRequiresUpdate - This error code will be returned by the compositor when there is a mandatory firmware update pending.\n\nIVRCompositor:\n* Compositor_FrameTiming now contains m_nReprojectionFlags. This will be 0 or more of:\n  . VRCompositor_ReprojectionReason_Cpu\n  . VRCompositor_ReprojectionReason_Gpu\n* Added ForceReconnectProcess. Call this to force a disconnect and reconnect to the compositor.\n* Added SuspendRendering. Call this when you know your process isn\u0027t going to render frames for a while. This often happens while loading new maps.\n\nIVROverlay:\n* 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\u0027s point of view.\n\nDriver Interface:\n* Added VREvent_DriverRequestedQuit - A driver can post this event to ask the system to shut down.\n* Added IVRDisplayComponent:: GetNextSwapTextureSetIndex to retrieve the index in the texture set to use for the next frame\u0027s render targets.\n* Changed IVRDisplayComponet:: CreateSwapTextureSet to create three textures to allow a slightly longer round-robin list.\n\nNOTE: 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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3426544]\n"
    },
    {
      "commit": "a6c91ef97302ce2abd852115682fb8726471c67b",
      "tree": "8bccd6d7783db33d44a1209cecfde2e2c5a26ea3",
      "parents": [
        "00275c551a9fccf87879678772abecc24cc1596c"
      ],
      "author": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Tue Mar 22 00:33:12 2016"
      },
      "committer": {
        "name": "Aaron Leiby",
        "email": "aaronl@valvesoftware.com",
        "time": "Tue Mar 22 00:33:12 2016"
      },
      "message": "unity sdk update\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3359735]\n"
    },
    {
      "commit": "00275c551a9fccf87879678772abecc24cc1596c",
      "tree": "c1ab8226062f835195012ce7ec5b818a844c4102",
      "parents": [
        "f1ffbf4e92f383bdb453d58f9583c51a5ec350d9"
      ],
      "author": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Tue Mar 15 20:49:46 2016"
      },
      "committer": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Tue Mar 15 20:49:46 2016"
      },
      "message": "Added new sample to demonstrate using the VR keyboard from an Unity app.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3347162]\n"
    },
    {
      "commit": "f1ffbf4e92f383bdb453d58f9583c51a5ec350d9",
      "tree": "4d3919d16805af97b3a9e7ee73b8e18a78c5bd6e",
      "parents": [
        "217ae22879404b61fd8fcbca0109286c6b273537"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Mar 10 01:41:07 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Mar 10 01:41:07 2016"
      },
      "message": "OpenVR SDK 0.9.19:\n\nIVRRenderModels:\n* Added LoadIntoTextureD3D11_Async.  Loads render model texture asynchronously and copies into provided texture (as opposed to creating one and returning it).\n\nIVROverlay:\n* Added SetOverlayRenderingPid/GetOverlayRenderingPid to let you delegate rendering of an overlay\u0027s texture to another process\n* Added new event VREvent_OverlaySharedTextureChanged, this is fired when the backing shared texture for an overlay target changes, which is useful when using GetOverlayTexture\n* Added GetOverlayTexture/ReleaseNativeOverlayHandle to let you retrieve a native texture pointer backing an overlay targe\n\n\nIVRApplications:\n* 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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3339101]\n"
    },
    {
      "commit": "217ae22879404b61fd8fcbca0109286c6b273537",
      "tree": "cd8d8d8c2fa17bc0dfe36b65f3a679f8a6ff7831",
      "parents": [
        "6f671fc80947dbccc4a9d27bd1b89d6038d94637"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Mar 04 00:56:38 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Mar 04 00:56:38 2016"
      },
      "message": "OpenVR SDK 0.9.18\n\nGeneral:\n* Added VREvent_Compositor_ChaperoneBoundsShown and VREvent_Compositor_ChaperoneBoundsHidden, which are sent when the chaperone bounds become visible/hidden.\n* Added VREvent_SeatedZeroPoseReset, which is sent whenever the user resets the seated zero pose in the dashboard or via the API.\n\nIVROverlay:\n* Added new overlay flag, VROverlayFlags_ShowTouchPadScrollWheel, to let you cause a scrollwheel to be draw on the active controller even if it isn\u0027t in scroll mode\n\nIVRApplications:\n* Added LaunchInternalProcess, which allows an application to switch which process is providing 3D frames for that application without showing any application transition UI.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3330105]\n"
    },
    {
      "commit": "6f671fc80947dbccc4a9d27bd1b89d6038d94637",
      "tree": "31f5dbac09a08b73a782a7bca1ced847f58e715b",
      "parents": [
        "c174bafe1e3d150ff44d23209f89e312bda93189"
      ],
      "author": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Sat Feb 27 02:44:24 2016"
      },
      "committer": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Sat Feb 27 02:44:24 2016"
      },
      "message": "OpenVR SDK 0.9.17:\n\nGeneral:\n* Added events for application to temporarily hide and re-show render models (VREvent_HideRenderModels, VREvent_ShowRenderModels).\n* Added VREvent_KeyboardDone  which is sent when DONE button clicked on keyboard.\n* 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.\n\nIVRApplications:\n\n\nCompositor:\n* Added new error code for detecting non-D3D11 class hardware (VRInitError_Compositor_D3D11HardwareRequired).\n* New interface for individually getting last tracked device poses returned by WaitGetPoses (GetLastPoseForTrackedDeviceIndex).\n* 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.\n\nSettings:\n* New speaker related settings (usingSpeakers, speakersForwardYawOffsetDegrees).\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3321024]\n"
    },
    {
      "commit": "c174bafe1e3d150ff44d23209f89e312bda93189",
      "tree": "0614dd56843a223f009cce9ee9bb8a14a3c72c17",
      "parents": [
        "c95571027b79644643bca044538144c96194c4f2"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Feb 16 00:36:14 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Feb 16 00:36:14 2016"
      },
      "message": "OpenVR SDK 0.9.16:\n\nNote: 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.\n\nGeneral:\n* Added VREvent_TrackedDeviceRoleChanged, which is sent when right/left handedness of a controller changes.\n\nSettings:\n* Added RemoveSection, which removes an entire section from the settings.\n\nRender Models:\n* 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.\n* LoadTextureD3D11 has become LoadTextureD3D11_Async which loads a texture into a D3D11 resource asynchronously.\n* Added VRComponentProperty_IsScrolled, which can be returned for render model components that are currently scrolling.\n* 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\u0027t care about this.\n\n\nDriver Interface:\n* 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\u0027t already have a matching property.\n* IServerDriverHost:: TrackedDeviceAdded now takes a serial number string. The driver will be called back to get specifics via properties.\n* Prop_SerialNumber_String and Prop_DeviceClass_Int32 are now required for every tracked device driver.\n* 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.\n* Removed ITrackedDeviceServerDriver::GetId. This information is retrieved via Prop_SerialNumber_String now.\n* Functions that aren\u0027t universal to all tracked devices have been moved onto driver components. These are retrieved with the GetComponent function. \n* Display-related functions have moved to IVRDisplayComponent. This includes:\n  * GetWindowBounds\n  * IsDisplayOnDesktop\n  * IsDisplayRealDisplay\n  * GetRecommendedRenderTargetSize\n  * GetEyeOutputViewport\n  * GetProjectionRaw\n  * ComputeDistortion\n  * CreateSwapTextureSet\n  * DestroySwapTextureSet\n  * DestroyAllSwapTextureSets\n  * SubmitLayer\n  * Present\n* Controller-related functions have been moved to IVRControllerComponent. This includes:\n  * GetControllerState\n  * TriggerHapticPulse\n* Camera-related functions have moved onto IVRCameraComponent, but this interface is still in flux, so you should avoid implementing it in your driver.\n* IServerDriverHost lost the TrackedDeviceInfoUpdated function. If property values change, the driver should call TrackedDevicePropertiesChanged instead.\n* GetSettings on IServerDriverHost and IClientDriverHost now take an interface string. Pass the version of IVRSettings that your driver was compiled against.\n* Interface versions were added to a few other places to support backward compatibility.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3299073]\n"
    },
    {
      "commit": "c95571027b79644643bca044538144c96194c4f2",
      "tree": "f0a89ac4913c13ec0848b9b8608214b0643565b7",
      "parents": [
        "80f2e46c95e3ddfa7d480940007385f9b96be5a4"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jan 29 22:17:39 2016"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Jan 29 22:17:39 2016"
      },
      "message": "OpenVR SDK 0.9.15\n\nGeneral:\n* Several event members have been changes from enum values to plain-old-data types to guarantee compatibility across compiler vendors.\n\nIVRSystem:\n* PollNextEvent() and PollNextEventWithPose() now take a parameter for the size in bytes of the VREvent object you are passing in\n* The data member in VREvent_t is now variable length and at the end of the structure. \n\nIVRApplications:\n* Added VRApplicationProperty_LastLaunchTime_Uint64, which returns the last launch time for an application in seconds since January 1, 1970.\n\nIVRCompositor:\n* Compositor_FrameTiming is totally different. What should we tell people, Aaron?\n\nIVROverlay:\n* Added the ability to render an overlay wrapped around a component on a tracked controller when in the dashboard or compositor.\n* k_EGamepadTextInputModeSubmit added for chat-style use of the keyboard where instead of a \"Done\" button there is a \"Submit\" button and it doesn\u0027t make the keyboard go away.\n* PollNextOverlayEvent() now takes a parameter for the size in bytes of the VREvent object you are passing in\n* 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.\n\nIVRRenderModels:\n* Added RenderModelHasComponent, which returns true if the named model has the named component.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3265813]\n"
    },
    {
      "commit": "80f2e46c95e3ddfa7d480940007385f9b96be5a4",
      "tree": "d117e10f2d3fa3087394fef6360bf3f953930cc7",
      "parents": [
        "5b1187b83fb1dadfb2ab84abaf428176a66bd5ad"
      ],
      "author": {
        "name": "Jeep Barnett",
        "email": "jeep@valvesoftware.com",
        "time": "Wed Dec 30 22:30:21 2015"
      },
      "committer": {
        "name": "Jeep Barnett",
        "email": "jeep@valvesoftware.com",
        "time": "Wed Dec 30 22:30:21 2015"
      },
      "message": "OpenVR SDK Update 0.9.14:\n\n* IVRSystem \n  * Added PerformanceTestEnableCapture(bool) for performance testing tools to toggle when frame timing data should be recorded.\n  * Added PerformanceTestReportFidelityLevelChange(int) for performance testing tools to report when they\u0027ve changed fidelity settings.\n\n* General\n  * Added present count field to Compositor_FrameTiming.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3205113]\n"
    },
    {
      "commit": "5b1187b83fb1dadfb2ab84abaf428176a66bd5ad",
      "tree": "b10ab522213e2234be945875fa4ce069d2736094",
      "parents": [
        "98375b27c9ab712bf73f7f9e68f2e6c4aeb86d20"
      ],
      "author": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Wed Dec 23 23:13:25 2015"
      },
      "committer": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Wed Dec 23 23:13:25 2015"
      },
      "message": "Fix small typo in SDK 0.9.13\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3201751]\n"
    },
    {
      "commit": "98375b27c9ab712bf73f7f9e68f2e6c4aeb86d20",
      "tree": "79b6b3130c310849b1515525d1d53c9044246b4a",
      "parents": [
        "b4bf24578bec10d5dc6eb14f91b98e71d5f7ee1b"
      ],
      "author": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Wed Dec 23 22:43:32 2015"
      },
      "committer": {
        "name": "Alex Hopmann",
        "email": "alexhop@valvesoftware.com",
        "time": "Wed Dec 23 22:43:32 2015"
      },
      "message": "OpenVR SDK Update 0.9.13:\n\n* IVRSystem \n  * Added new APIs GetTrackedDeviceIndexForControllerRole() and GetControllerRoleForTrackedDeviceIndex() to get the correct devices for the left and right hand controllers.\n\n* IVRChaperone\n  * API GetBoundsColor has changed to also return pOutputCameraColor.\n\n* IVROverlay\n  * Added GetTransformForOverlayCoordinates() to return the 3d space transform for a given 2d point in an overlay.\n  * Added SetKeyboardTransformAbsolute() to set the keyboard position in 3d space\n  * Added SetKeyboardPositionForOverlay() to set the keyboard position appropriate for an overlay\n\n* IVRControlPanel removed\n* Misc new types added\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3201700]\n"
    },
    {
      "commit": "b4bf24578bec10d5dc6eb14f91b98e71d5f7ee1b",
      "tree": "3495f649d2be362c38bab101f2f2e4e62f104f1b",
      "parents": [
        "061cf411ee1125fe4b7cdf3837451a1c6a32a3c8"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Mon Nov 30 23:51:56 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Mon Nov 30 23:51:56 2015"
      },
      "message": "OpenVR SDK Update 0.9.12:\n* 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.\n  * HmdError -\u003e EVRInitError\n  * Hmd_Eye -\u003e EVREye \n  * GraphicsAPIConvention -\u003e EGraphicsAPIConvention\n  * HmdTrackingResult -\u003e ETrackingResult\n  * TrackedDeviceClass -\u003e ETrackedDeviceClass \n  * TrackingUniverseOrigin -\u003e ETrackingUniverseOrigin\n  * TrackedDeviceProperty -\u003e ETrackedDeviceProperty\n  * TrackedPropertyError -\u003e ETrackedPropertyError\n  * VRSubmitFlags_t -\u003e EVRSubmitFlags\n  * VRState_t -\u003e EVRState\n  * CollisionBoundsStyle_t -\u003e ECollisionBoundsStyle\n  * VROverlayError -\u003e EVROverlayError\n  * VRFirmwareError -\u003e EVRFirmwareError\n  * VRCompositorError -\u003e EVRCompositorError\n* Renamed all HmdError_* enum vales to VRInitError_* to match the new enum name.\n* VR_GetStringForHmdError was renamed to VR_GetVRInitErrorAsEnglishDescription to match the new enum name and make it clear what this function actually does.\n* 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.\n\n* IVRRenderModels\n   * Introduced Component interface, which allows client applications to draw, label, or interact with tracked object components.\n       Components may define coordinate systems, renderable geometry, associations with button state, and supports button / axis dynamics. \n\n      Example uses of the IVRRenderModels Component API\n      *   Compositor controller rendering reflects live button/trackpad/trigger motion dynamics\n      *   Client applications can query controller-agnostic render label \"attachment points\"\n      *   Client applications can query controller-agnostic hand-pose\n   * LoadRenderModel does not load textures automatically, instead an additional call to LoadTexture is required.  This enables texture reuse across model components.\n\n* 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\u0027s 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.\n* 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:\n  * GetWindowBounds\n  * GetEyeOutputViewport\n  * GetDXGIOutputInfo\n* 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.\n\n* 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.\n* IVROverlay::SetOverlayGamma has been replaced with SetOverlayTextureColorSpace wich allows applications to specify that their texture is in linear or SRGB space.\n* IVRCompositor::Submit may return the following two new errors now rather than silently failing:\n  * TextureUsesUnsupportedFormat\n  * SharedTexturesNotSupported (if your app does not use DXGI 1.1 or greater)\n* IVRCompositor::GetLastError has been removed.  Errors are reported in the log.\n* IVRCompositor::Get/SetVSync has been removed.\n* IVRCompositor::Get/SetGamma has been removed (specify color space when submitting textures now instead).\n* Added IVRCompositor::GetLastPoses - returns the last set of poses returned by WaitGetPoses.\n\n* Added new application type VRApplication_Background, which will not start SteamVR if it isn\u0027t already running and will not keep it running if it would otherwise shutdown.\n* 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.\n* 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.\n* 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\u0027t exit on its own.\n* The concept of a \"home application\" has been removed from the API. No 3D application will be launched automatically when SteamVR starts.\n\n* Chaperone data is automatically reloaded in all applications when VRServer receives VREvent_ChaperoneSettingsHaveChanged. It\u0027s no longer necessary to watch for this event in each application.\n* IVRChaperoneSetup has been added to the API which includes access to Chaperone Bounds polygons.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3147743]\n"
    },
    {
      "commit": "061cf411ee1125fe4b7cdf3837451a1c6a32a3c8",
      "tree": "3a662684859acdbbdd83f0320b991fa655eb4224",
      "parents": [
        "9a27011472d69271cd3924efa1a31d72435ac248"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Oct 23 00:52:07 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Oct 23 00:52:07 2015"
      },
      "message": "OpenVR SDK 0.9.11:\n\nIVROverlay:\n* 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:\n  * GetGamepadFocusOverlay - Returns the overlay that currently has gamepad focus.\n  * SetGamepadFocusOverlay - Sets the overlay that currently has gamepad focus. The dashboard will do this automatically for the active overlay.\n  * SetOverlayNeighbor - Set the up/down/left/right relationship between two overlays.\n  * 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.\n\nIVRCompositor:\n* Added PostPresentHandoff - Should be called immediately after Present, only if you can\u0027t call WaitGetPoses instead (e.g. due to not having a separate render thread).\n* Added GetLastPoses - Returns the last set of poses that would normally have been gotten through calling WaitGetPoses.\n\nIVRTrackedCamera:\n* This is a work in progress API for forward facing cameras.\n\nIVRChaperone:\n* Added GetPlayAreaSize - Returns the size of the Play Area in X/Z dimensions.\n* Renamed GetSoftBoundsInfo to GetPlayAreaRect - Returns 4 corners of Play Area centered around the Standing Center.\n* Removed GetHardBoundsInfo\n* Removed GetSeatedBoundsInfo\n\nIVRChaperoneSetup:\n* Added GetWorkingPlayAreaSize - Returns the size of the working Play Area in X/Z dimensions.\n* Renamed GetWorkingSoftBoundsInfo to GetWorkingPlayAreaRect - Returns 4 corners of working Play Area centered around the Standing Center.\n* Replaced SetWorkingSoftBoundsInfo with SetWorkingPlayAreaSize - Sets the X/Z dimensions of the working Play Area.\n* Renamed GetWorkingHardBoundsInfo to GetWorkingCollisionBoundsInfo - Returns quads for the working Collision Bounds.\n* Renamed SetWorkingHardBoundsInfo to SetWorkingCollisionBoundsInfo - Returns quads for the working Collision Bounds.\n* Added GetLiveCollisionBoundsInfo - Returns quads for the current Collision Bounds (formerly known as Hard Bounds).\n* Removed all TagPoses interfaces and functionality.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3047315]\n"
    },
    {
      "commit": "9a27011472d69271cd3924efa1a31d72435ac248",
      "tree": "a9b025fb66b4637c4f35e78fd1963571deb680ad",
      "parents": [
        "ee4fac4198f06633f8b109c2ea087e11c1a49910"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Oct 08 00:46:42 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Oct 08 00:46:42 2015"
      },
      "message": "OpenVR SDK 0.9.10\n\n* 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. \n* Added events to notify launchers when about ongoing application transitions.\n* Added button IDs for DPad and A buttons that will be sent when the user presses on the trackpad while in the VR dashboard.\n* Added new HmdError_ShuttingDown, with will be returned when a new application calls VR_Init while SteamVR is in the process of shutting down.\n* Added new Application errors for when an application can\u0027t start because another application transition is already in progress.\n* Added new IVRApplications methods that are intended for launchers, but may be of more general use:\n  * GetTransitionState() - returns what phase of the transition process the system is in\n  * GetStartingApplication() - returns the app key of the application that is starting up\n  * PerformApplicationPrelaunchCheck() - kicks off the application transition process and returns what kind of event the caller should wait for before starting its new application\n  * GetApplicationsTransitionStateNameFromEnum() - Turns the results of GetTransitionState() into a string for logging purposes\n* Added more const to the settings strings to avoid compiler warnings on some platforms.\n* Added IVRCompositor methods:\n  * ShowMirrorWindow/HideMirrorWindow - Shows or hides a window that displays the left undistorted eye that the user is seeing in the HMD\n  * CompositorDumpImages - Writes all textures that the compositor knows about (including overlays) to a \"screenshots\" folder in the root of the runtime\n  * GetFrameTimeRemaining - Returns the time left (in seconds) until the end of the current frame\n  * 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.\n* Added preliminary support for controller-based keyboard input\n * Use IVROverlay::ShowKeyboard() to show the keyboard.\n * Currently only minimal mode is supported\n * Listen for KeyboardCharInput events to receive key input while the keyboard is up. The cNewInput buffer will contain input.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 3016204]\n"
    },
    {
      "commit": "ee4fac4198f06633f8b109c2ea087e11c1a49910",
      "tree": "791b9c11f69bd07a48e6c4efc65713d23010ce40",
      "parents": [
        "d37025704a429762f7aecfa062b6fe5cae671ec5"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Sep 11 19:18:10 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri Sep 11 19:18:10 2015"
      },
      "message": "Updated OSX libopenvr_api.dylib in the directory to match the rest of the SDK.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2963828]\n"
    },
    {
      "commit": "d37025704a429762f7aecfa062b6fe5cae671ec5",
      "tree": "75a3f181bb685b0df6fe2a0b36d5edb2ccf38f3e",
      "parents": [
        "49228302370647aece9a87b36d3a979c511f3433"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Sep 10 23:08:52 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Sep 10 23:08:52 2015"
      },
      "message": "OpenVR SDK 0.9.9:\n\n* 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.\n* 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.\n* Dashboard overlays will now be send pressed and unpressed events when they are the current overlay. \n* Added IVRSystem::GetRawZeroPoseToStandingAbsoluteTrackingPose(), which allows an application to transform between standing and the raw coordinate system. \n* 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.\n* Added methods to (GetBoundsColor, AreBoundsVisible, ForceBoundsVisible) to let applications query the current state of the bounds.\n* IVRCompositor::Submit now takes a flag parameter that allows an application to submit images that have already been distorted.\n* 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.)\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2961972]\n"
    },
    {
      "commit": "49228302370647aece9a87b36d3a979c511f3433",
      "tree": "245bf79e1fd3a134bf0b6d999623bce01a31de4f",
      "parents": [
        "088a60b823f89670f811391136c1a70c9de64d97"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Aug 13 01:28:48 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Aug 13 01:28:48 2015"
      },
      "message": "General:\n* Added new event VREvent_SceneApplicationChanged. It is sent whenever the application drawing the 3D scene changes.\n* 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.\n* For Scene applications, VR_Init will now block until the current scene application exits.\n* Added new error return code (HmdError_Init_InitCanceledByUser) from VR_Init when the user decides to not exit the current Scene.\n* 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.\n\nIVRCompositor:\n* 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.\n\nIVROverlay:\n* Exposed curve parameters for high-quality overlay.\n\nIVRApplications:\n* This new interface allows the following operations:\n  * Applications, installers, and distribution systems can register applications with the system.\n  * Launchers can enumerate the list of installed applications and information about those applications\n  * Launchers can start applications by key instead of needing to know the details of how to launch the application.\n  * Dashboard overlays can be marked to auto-launch at startup so they are always available.\n  * 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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2918409]\n"
    },
    {
      "commit": "088a60b823f89670f811391136c1a70c9de64d97",
      "tree": "ae0156e9251ad895425ddea5f32b48d18269ade6",
      "parents": [
        "59db93350b00b026670fed70c659bdb04f7c52e2"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Thu Aug 06 23:57:16 2015"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Thu Aug 06 23:57:16 2015"
      },
      "message": "* Added new function VR_IsRuntimeInstalled() to openvr.h. It returns true if the VR runtime directory was found.\n* 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\n* 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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2912031]\n"
    },
    {
      "commit": "59db93350b00b026670fed70c659bdb04f7c52e2",
      "tree": "28b7f033014831d453da16d432acba7dcde7bd08",
      "parents": [
        "1daef6027f37a8ecb6b86439f66e04e74970b2b9"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Wed Jul 15 23:23:28 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Wed Jul 15 23:23:28 2015"
      },
      "message": "Rearranged type declarations in the headers so they\u0027re in the right order.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2879780]\n"
    },
    {
      "commit": "1daef6027f37a8ecb6b86439f66e04e74970b2b9",
      "tree": "031a067abc0ffb318b23f3a975c66178efde39cb",
      "parents": [
        "d4849a0f950e3c16f77916a6ba6fc4c144ed65d4"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jul 14 22:28:41 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jul 14 22:28:41 2015"
      },
      "message": "IVROverlay:\n* Added GetOverlayKey and GetOverlayName which return the key or name of an overlay from its handle.\n* Added GetOverlayImageData which returns the current raw image data from an overlay.\n* Improved reliability of SetOverlayRaw and SetOverlayFromFile.\n* Added VREvent_ImageLoaded, which is sent when SetOverlayRaw or SetOverlayFromFile finish updating the overlay texture.\n* Added VROverlayError_UnableToLoadFile, which may be returned if SetOverlayFromFile fails.\n* 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.\n\nIVRNotifications:\n* This new interface allows applications to post notifications to the user. Details and documentation are coming soon.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2877976]\n"
    },
    {
      "commit": "d4849a0f950e3c16f77916a6ba6fc4c144ed65d4",
      "tree": "d8fed79bd4824bf4bc0230e57134a94757701bc4",
      "parents": [
        "687645d23cb46c63bad79846a9b58a35326d0a2d"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jul 07 18:35:11 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Tue Jul 07 18:35:11 2015"
      },
      "message": "Removed Microsoft C Runtime DLL dependency from openvr_api.dll. Applications should be able to use this with any C runtime and won\u0027t require that the VS2010 C runtime be installed.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2866962]\n"
    },
    {
      "commit": "687645d23cb46c63bad79846a9b58a35326d0a2d",
      "tree": "c84d3ad54178f5a354133608838186e28fdb593d",
      "parents": [
        "6e1abf5eaa45f8c09d739d1a60561b1809b0bc88"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Mon Jul 06 22:50:39 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Mon Jul 06 22:50:39 2015"
      },
      "message": "SDK Update 0.9.3\n\nGeneral:\n* 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:\n  * vr::IVRSystem *VRSystem()\n  * vr:: IVRChaperone*VRChaperone ()\n  * vr:: IVRCompositor*VRCompositor ()\n  * vr:: IVROverlay*VROverlay ()\n  * vr::IVRRenderModels *VRRenderModels()\n  * vr:: IVRControlPanel*VRControlPanel()\n* Added VREvent_Quit to tell applications when they should exit. Applications that dont exit will be killed after five seconds.\n* Added VREvent_ProcessQuit to tell applications when another OpenVR process has exited.\n\nC API:\n* Added missing \"VR_\" prefixes.\n* Added missing global entry points (VR_Init, VR_Shutdown, etc.).\n\nIVRSystem:\n* Added GetSortedTrackedDeviceIndicesOfClass helper function.  Useful for determining left vs right controller, etc. \n* Added properties to get battery and changing state for controllers. These are currently returning dummy values in the Lighthouse driver.\n  * Prop_DeviceIsWireless_Bool\n  * Prop_DeviceIsCharging_Bool\n  * Prop_DeviceBatteryPercentage_Float\n  * Prop_StatusDisplayTransform_Matrix34\n\nIVRNotifications:\n* Experimental version of Notifications is now in the SDK. There WILL be a breaking change to this API in a future SDK.\n* Notifications API will enable creating Notification Sources that send alerts to users while they are in a VR experience.\n\nIVRControlPanel:\n* Added QuitProcess(), which tells another OpenVR process to quit. Pass in 0 to tell all OpenVR processes to quit. In the all case, \n\nIVRCompositor:\n* Compositor_FrameTiming now additionally reports the following values:\n * m_flFrameIntervalMs\n  * m_flSceneRenderCpuMs\n  * m_flSceneRenderGpuMs\n  * m_flCompositorRenderCpuMs\n  * m_flCompositorRenderGpuMs\n  * m_flPresentCallCpuMs\n  * m_flRunningStartMs\n* Removed IVRCompositor::SetGraphicsDevice. Applications pass in the type of a texture with each Submit call instead.\n* Submit\u0027s TextureBounds no longer need to be vertically flipped for OpenGL textures.\n\nIVROverlay:\n* Renamed the system overlay to the Dashboard. Added CreateDashboardOverlay() to allow applications to create overlays that are intended to appear in the dashboard. \n* Removed Set/GetOverlayVisibility. This used to be used to set an overlay as a system overlay. \n* Added Set/GetOverlayColor. The overlay color (including alpha) is multiplied by the overlays output texture value.\n* 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.\n* SetOverlayTexture now takes a texture type.  SetOverlayTextureBounds still needs to be flipped vertically for OpenGL textures.\n\nIVRChaperone:\n*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.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2865502]\n"
    },
    {
      "commit": "6e1abf5eaa45f8c09d739d1a60561b1809b0bc88",
      "tree": "998a44ed5f8b3ac46c58e612095bc17e31d7c2ff",
      "parents": [
        "29d6b20cb0e566461de829c98bfe2aecaac1beb3"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Jun 11 20:34:26 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Jun 11 20:34:26 2015"
      },
      "message": "Updated the HelloVR sample to the new SDK.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2826896]\n"
    },
    {
      "commit": "29d6b20cb0e566461de829c98bfe2aecaac1beb3",
      "tree": "93c510f2401cc0309405485b2f6964be5957311b",
      "parents": [
        "e85221e560b70f253042366fb5fb5a89c5978a34"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Thu Jun 11 18:53:18 2015"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Thu Jun 11 18:53:18 2015"
      },
      "message": "Merging for version 0.9.2\n\nGeneral:\n* 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.\n* Added include guards around VR types in case openvr.h and openvr_driver.h end up included in the same file.\n\nIVRSystem:\n* Added properties to get information about connected wireless dongles.\n* Added properties to determine if the HMD display extends the desktop.\n* Both render model functions have moved to the new IVRRenderModel interface.\n* HandleControllerOverlayInteractionAsMouse has moved to IVROverlay.\n\nIVRCompositor\n* Removed all overlay related functions. Use the new IVROverlay interface.\n* Added the concept of scene focus. Only the application with scene focus can render the 3D scene in the compositor.\n* Focus goes to application that started rendering most recently. \n* 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.\n* 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.\n* 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.\n* Submit will now return an error if the current application doesnt have focus.\n\nIVRRenderModel:\n* Added functions to enumerate the list of available render models.\n\nIVROverlay:\n* This is a new interface in this SDK revision. It offers:\n  * Support for multiple overlays in the compositor\n  * The ability to attach an overlay to a controller or other tracked device\n  * 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.\n  * See the documentation for more details.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2826527]\n"
    },
    {
      "commit": "e85221e560b70f253042366fb5fb5a89c5978a34",
      "tree": "7fc6c6574a183e2af909fe2d71cca0c8cd35ea71",
      "parents": [
        "57b31ffd8c25f390421370f3944b62c38fbf62dd"
      ],
      "author": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon May 11 23:20:27 2015"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremys@valvesoftware.com",
        "time": "Mon May 11 23:20:27 2015"
      },
      "message": "Made openvr_api.dylib a universal binary.  This required changing a project file which also caused other platforms to rebuild.\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2758535]\n"
    },
    {
      "commit": "57b31ffd8c25f390421370f3944b62c38fbf62dd",
      "tree": "78e950eb6636fd0ed11c6f7805c0c18ac3324bc7",
      "parents": [
        "4a434b1da6f22d77435776d6e580eb6bbfeb7797"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Fri May 01 01:07:50 2015"
      },
      "committer": {
        "name": "Jeremy Selan",
        "email": "jeremy.selan@gmail.com",
        "time": "Tue May 12 19:09:18 2015"
      },
      "message": "Typo fix\n\n[git-p4: depot-paths \u003d \"//vr/steamvr/sdk_release/\": change \u003d 2738763]\n"
    },
    {
      "commit": "4a434b1da6f22d77435776d6e580eb6bbfeb7797",
      "tree": "35236fdf2dc963ca978b5f6e1216ca2ca299b218",
      "parents": [
        "dd2631cd716c3b4cc8721ca05bcf28b873e05ec9"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 15:59:23 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 15:59:23 2015"
      },
      "message": "Added the OSX dylib to the lib directory.\n"
    },
    {
      "commit": "dd2631cd716c3b4cc8721ca05bcf28b873e05ec9",
      "tree": "28db6c1580e5344f1a3bd68af0cbf420444ea3a5",
      "parents": [
        "c19450b618ee3f889d83bb49a0cd303536f231e5"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 04:54:57 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 04:54:57 2015"
      },
      "message": "Fixed bug with vblank when the compositor is enabled.\n"
    },
    {
      "commit": "c19450b618ee3f889d83bb49a0cd303536f231e5",
      "tree": "145d18823736b6a33500e012157e7811b62d3869",
      "parents": [
        "f87667074cabc24f643170069d176dadb390dbb7"
      ],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 04:22:49 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 04:22:49 2015"
      },
      "message": "Corrected namespace for VR_Init and related functions\n"
    },
    {
      "commit": "f87667074cabc24f643170069d176dadb390dbb7",
      "tree": "67355090186410765f4f041a96ea7d39ac97bb60",
      "parents": [],
      "author": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 02:57:55 2015"
      },
      "committer": {
        "name": "Joe Ludwig",
        "email": "joe@valvesoftware.com",
        "time": "Thu Apr 30 02:57:55 2015"
      },
      "message": "Initial commit\n"
    }
  ]
}
