summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src/ovr.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/src/ovr.cpp')
-rw-r--r--3rdparty/bgfx/src/ovr.cpp328
1 files changed, 0 insertions, 328 deletions
diff --git a/3rdparty/bgfx/src/ovr.cpp b/3rdparty/bgfx/src/ovr.cpp
deleted file mode 100644
index 5cd62ef3956..00000000000
--- a/3rdparty/bgfx/src/ovr.cpp
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright 2011-2016 Branimir Karadzic. All rights reserved.
- * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
- */
-
-#include "ovr.h"
-
-#if BGFX_CONFIG_USE_OVR
-
-namespace bgfx
-{
-#if OVR_VERSION <= OVR_VERSION_050
-# define OVR_EYE_BUFFER 100
-#else
-# define OVR_EYE_BUFFER 8
-#endif // OVR_VERSION...
-
- OVR::OVR()
- : m_hmd(NULL)
- , m_isenabled(false)
- , m_debug(false)
- {
- }
-
- OVR::~OVR()
- {
- BX_CHECK(NULL == m_hmd, "OVR not shutdown properly.");
- }
-
- void OVR::init()
- {
- bool initialized = !!ovr_Initialize();
- BX_WARN(initialized, "Unable to create OVR device.");
- if (!initialized)
- {
- return;
- }
-
- m_hmd = ovrHmd_Create(0);
- if (NULL == m_hmd)
- {
- m_hmd = ovrHmd_CreateDebug(ovrHmd_DK2);
- BX_WARN(NULL != m_hmd, "Unable to create OVR device.");
- if (NULL == m_hmd)
- {
- return;
- }
- }
-
- BX_TRACE("HMD: %s, %s, firmware: %d.%d"
- , m_hmd->ProductName
- , m_hmd->Manufacturer
- , m_hmd->FirmwareMajor
- , m_hmd->FirmwareMinor
- );
-
- ovrSizei sizeL = ovrHmd_GetFovTextureSize(m_hmd, ovrEye_Left, m_hmd->DefaultEyeFov[0], 1.0f);
- ovrSizei sizeR = ovrHmd_GetFovTextureSize(m_hmd, ovrEye_Right, m_hmd->DefaultEyeFov[1], 1.0f);
- m_rtSize.w = sizeL.w + sizeR.w + OVR_EYE_BUFFER;
- m_rtSize.h = bx::uint32_max(sizeL.h, sizeR.h);
- m_warning = true;
- }
-
- void OVR::shutdown()
- {
- BX_CHECK(!m_isenabled, "HMD not disabled.");
- ovrHmd_Destroy(m_hmd);
- m_hmd = NULL;
- ovr_Shutdown();
- }
-
- void OVR::getViewport(uint8_t _eye, Rect* _viewport)
- {
- _viewport->m_x = _eye * (m_rtSize.w + OVR_EYE_BUFFER + 1)/2;
- _viewport->m_y = 0;
- _viewport->m_width = (m_rtSize.w - OVR_EYE_BUFFER)/2;
- _viewport->m_height = m_rtSize.h;
- }
-
- bool OVR::postReset(void* _nwh, ovrRenderAPIConfig* _config, bool _debug)
- {
- if (_debug)
- {
- switch (_config->Header.API)
- {
-#if BGFX_CONFIG_RENDERER_DIRECT3D11
- case ovrRenderAPI_D3D11:
- {
- ovrD3D11ConfigData* data = (ovrD3D11ConfigData*)_config;
-# if OVR_VERSION > OVR_VERSION_043
- m_rtSize = data->Header.BackBufferSize;
-# else
- m_rtSize = data->Header.RTSize;
-# endif // OVR_VERSION > OVR_VERSION_043
- }
- break;
-#endif // BGFX_CONFIG_RENDERER_DIRECT3D11
-
-#if BGFX_CONFIG_RENDERER_OPENGL
- case ovrRenderAPI_OpenGL:
- {
- ovrGLConfigData* data = (ovrGLConfigData*)_config;
-# if OVR_VERSION > OVR_VERSION_043
- m_rtSize = data->Header.BackBufferSize;
-# else
- m_rtSize = data->Header.RTSize;
-# endif // OVR_VERSION > OVR_VERSION_043
- }
- break;
-#endif // BGFX_CONFIG_RENDERER_OPENGL
-
- case ovrRenderAPI_None:
- default:
- BX_CHECK(false, "You should not be here!");
- break;
- }
-
- m_debug = true;
- return false;
- }
-
- if (NULL == m_hmd)
- {
- return false;
- }
-
- m_isenabled = true;
-
- ovrBool result;
- result = ovrHmd_AttachToWindow(m_hmd, _nwh, NULL, NULL);
- if (!result) { goto ovrError; }
-
- ovrFovPort eyeFov[2] = { m_hmd->DefaultEyeFov[0], m_hmd->DefaultEyeFov[1] };
- result = ovrHmd_ConfigureRendering(m_hmd
- , _config
- , 0
-#if OVR_VERSION < OVR_VERSION_050
- | ovrDistortionCap_Chromatic // permanently enabled >= v5.0
-#endif
- | ovrDistortionCap_Vignette
- | ovrDistortionCap_TimeWarp
- | ovrDistortionCap_Overdrive
- | ovrDistortionCap_NoRestore
- | ovrDistortionCap_HqDistortion
- , eyeFov
- , m_erd
- );
- if (!result) { goto ovrError; }
-
- ovrHmd_SetEnabledCaps(m_hmd
- , 0
- | ovrHmdCap_LowPersistence
- | ovrHmdCap_DynamicPrediction
- );
-
- result = ovrHmd_ConfigureTracking(m_hmd
- , 0
- | ovrTrackingCap_Orientation
- | ovrTrackingCap_MagYawCorrection
- | ovrTrackingCap_Position
- , 0
- );
-
- if (!result)
- {
-ovrError:
- BX_TRACE("Failed to initialize OVR.");
- m_isenabled = false;
- return false;
- }
-
- m_warning = true;
- return true;
- }
-
- void OVR::postReset(const ovrTexture& _texture)
- {
- if (NULL != m_hmd)
- {
- m_texture[0] = _texture;
- m_texture[1] = _texture;
-
- ovrRecti rect;
- rect.Pos.x = 0;
- rect.Pos.y = 0;
- rect.Size.w = (m_rtSize.w - OVR_EYE_BUFFER)/2;
- rect.Size.h = m_rtSize.h;
-
- m_texture[0].Header.RenderViewport = rect;
-
- rect.Pos.x += rect.Size.w + OVR_EYE_BUFFER;
- m_texture[1].Header.RenderViewport = rect;
-
- m_timing = ovrHmd_BeginFrame(m_hmd, 0);
-#if OVR_VERSION > OVR_VERSION_042
- m_pose[0] = ovrHmd_GetHmdPosePerEye(m_hmd, ovrEye_Left);
- m_pose[1] = ovrHmd_GetHmdPosePerEye(m_hmd, ovrEye_Right);
-#else
- m_pose[0] = ovrHmd_GetEyePose(m_hmd, ovrEye_Left);
- m_pose[1] = ovrHmd_GetEyePose(m_hmd, ovrEye_Right);
-#endif // OVR_VERSION > OVR_VERSION_042
- }
- }
-
- void OVR::preReset()
- {
- if (m_isenabled)
- {
- ovrHmd_EndFrame(m_hmd, m_pose, m_texture);
- ovrHmd_AttachToWindow(m_hmd, NULL, NULL, NULL);
- ovrHmd_ConfigureRendering(m_hmd, NULL, 0, NULL, NULL);
- m_isenabled = false;
- }
-
- m_debug = false;
- }
-
- bool OVR::swap(HMD& _hmd)
- {
- _hmd.flags = BGFX_HMD_NONE;
-
- if (NULL != m_hmd)
- {
- _hmd.flags |= BGFX_HMD_DEVICE_RESOLUTION;
- _hmd.deviceWidth = m_hmd->Resolution.w;
- _hmd.deviceHeight = m_hmd->Resolution.h;
- }
-
- if (!m_isenabled)
- {
- return false;
- }
-
- _hmd.flags |= BGFX_HMD_RENDERING;
- ovrHmd_EndFrame(m_hmd, m_pose, m_texture);
-
- if (m_warning)
- {
- m_warning = !ovrHmd_DismissHSWDisplay(m_hmd);
- }
-
- m_timing = ovrHmd_BeginFrame(m_hmd, 0);
-
-#if OVR_VERSION > OVR_VERSION_042
- m_pose[0] = ovrHmd_GetHmdPosePerEye(m_hmd, ovrEye_Left);
- m_pose[1] = ovrHmd_GetHmdPosePerEye(m_hmd, ovrEye_Right);
-#else
- m_pose[0] = ovrHmd_GetEyePose(m_hmd, ovrEye_Left);
- m_pose[1] = ovrHmd_GetEyePose(m_hmd, ovrEye_Right);
-#endif // OVR_VERSION > OVR_VERSION_042
-
- getEyePose(_hmd);
-
- return true;
- }
-
- void OVR::recenter()
- {
- if (NULL != m_hmd)
- {
- ovrHmd_RecenterPose(m_hmd);
- }
- }
-
- void OVR::getEyePose(HMD& _hmd)
- {
- if (NULL != m_hmd)
- {
- for (int ii = 0; ii < 2; ++ii)
- {
- const ovrPosef& pose = m_pose[ii];
- HMD::Eye& eye = _hmd.eye[ii];
- eye.rotation[0] = pose.Orientation.x;
- eye.rotation[1] = pose.Orientation.y;
- eye.rotation[2] = pose.Orientation.z;
- eye.rotation[3] = pose.Orientation.w;
- eye.translation[0] = pose.Position.x;
- eye.translation[1] = pose.Position.y;
- eye.translation[2] = pose.Position.z;
-
- const ovrEyeRenderDesc& erd = m_erd[ii];
- eye.fov[0] = erd.Fov.UpTan;
- eye.fov[1] = erd.Fov.DownTan;
- eye.fov[2] = erd.Fov.LeftTan;
- eye.fov[3] = erd.Fov.RightTan;
-#if OVR_VERSION > OVR_VERSION_042
- eye.viewOffset[0] = erd.HmdToEyeViewOffset.x;
- eye.viewOffset[1] = erd.HmdToEyeViewOffset.y;
- eye.viewOffset[2] = erd.HmdToEyeViewOffset.z;
-#else
- eye.viewOffset[0] = erd.ViewAdjust.x;
- eye.viewOffset[1] = erd.ViewAdjust.y;
- eye.viewOffset[2] = erd.ViewAdjust.z;
-#endif // OVR_VERSION > OVR_VERSION_042
- eye.pixelsPerTanAngle[0] = erd.PixelsPerTanAngleAtCenter.x;
- eye.pixelsPerTanAngle[1] = erd.PixelsPerTanAngleAtCenter.y;
- }
- }
- else
- {
- for (int ii = 0; ii < 2; ++ii)
- {
- _hmd.eye[ii].rotation[0] = 0.0f;
- _hmd.eye[ii].rotation[1] = 0.0f;
- _hmd.eye[ii].rotation[2] = 0.0f;
- _hmd.eye[ii].rotation[3] = 1.0f;
- _hmd.eye[ii].translation[0] = 0.0f;
- _hmd.eye[ii].translation[1] = 0.0f;
- _hmd.eye[ii].translation[2] = 0.0f;
- _hmd.eye[ii].fov[0] = 1.32928634f;
- _hmd.eye[ii].fov[1] = 1.32928634f;
- _hmd.eye[ii].fov[2] = 0 == ii ? 1.05865765f : 1.09236801f;
- _hmd.eye[ii].fov[3] = 0 == ii ? 1.09236801f : 1.05865765f;
- _hmd.eye[ii].viewOffset[0] = 0 == ii ? 0.0355070010f : -0.0375000015f;
- _hmd.eye[ii].viewOffset[1] = 0.0f;
- _hmd.eye[ii].viewOffset[2] = 0 == ii ? 0.00150949787f : -0.00150949787f;
- _hmd.eye[ii].pixelsPerTanAngle[0] = 1;
- _hmd.eye[ii].pixelsPerTanAngle[1] = 1;
- }
- }
-
- _hmd.width = uint16_t(m_rtSize.w);
- _hmd.height = uint16_t(m_rtSize.h);
- }
-
-} // namespace bgfx
-
-#endif // BGFX_CONFIG_USE_OVR