public static SrdXrResult SetColorSpaceSettings(IntPtr session, ColorSpace colorSpace) { var unityGamma = 2.2f; var settings = new SrdXrColorManagementSettings(colorSpace == ColorSpace.Gamma, unityGamma); return(XRRuntimeAPI.SetColorManagementSettings(session, ref settings)); }
public static void ShowNativeLog() { var callback = new XRRuntimeAPI.DebugLogDelegate((message, log_levels) => { switch (log_levels) { case SrdXrLogLevels.LOG_LEVELS_TRACE: case SrdXrLogLevels.LOG_LEVELS_DEBUG: case SrdXrLogLevels.LOG_LEVELS_INFO: Debug.Log(message); break; case SrdXrLogLevels.LOG_LEVELS_WARN: Debug.LogWarning(message); break; case SrdXrLogLevels.LOG_LEVELS_ERR: Debug.LogError(message); break; default: break; } }); XRRuntimeAPI.SetDebugLogCallback(Marshal.GetFunctionPointerForDelegate(callback)); }
public static SrdXrResult GetActiveStateCrosstalkCorrection(IntPtr session, out bool state) { var result = XRRuntimeAPI.GetCrosstalkCorrectionSettings(session, out var settings); state = settings.compensation_enabled; return(result); }
public static int ShowMessageBox(string title, string message, Action <string> debugLogFunc = null) { if (debugLogFunc != null) { debugLogFunc(message); } return(XRRuntimeAPI.ShowMessageBox(SRDApplicationWindow.GetSelfWindowHandle(), title, message)); }
public static SrdXrResult BeginSession(IntPtr session) { SrdXrSessionBeginInfo begin_info; { begin_info.primary_view_configuration_type = SrdXrViewConfigurationType.VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO; } return(XRRuntimeAPI.BeginSession(session, ref begin_info)); }
public static SrdXrResult BeginFrame(IntPtr session, bool callInMainThread = true, bool callinRenderThread = false) { if (callinRenderThread) { GL.IssuePluginEvent(XRRuntimeAPI.GetBeginFramePtr(session), 0); } if (callInMainThread) { return(XRRuntimeAPI.BeginFrame(session)); } return(SrdXrResult.SUCCESS); }
public static SrdXrResult EndFrame(IntPtr session, bool callInMainThread = true, bool callinRenderThread = false) { var end_info = new SrdXrFrameEndInfo(); if (callinRenderThread) { GL.IssuePluginEvent(XRRuntimeAPI.GetEndFramePtr(session, ref end_info), 0); } if (callInMainThread) { return(XRRuntimeAPI.EndFrame(session, ref end_info)); } return(SrdXrResult.SUCCESS); }
public static bool GetSRDBodyBounds(IntPtr session, out SRDSettings.BodyBounds bodyBounds) { SrdXrSRDData data; if (XRRuntimeAPI.GetPlatformSpecificData(session, out data) != SrdXrResult.SUCCESS) { bodyBounds = new SRDSettings.BodyBounds(); return(false); } bodyBounds = new SRDSettings.BodyBounds(data.display_size.width_m, data.display_size.height_m * Mathf.Sin(data.display_tilt_rad), data.display_size.height_m * Mathf.Cos(data.display_tilt_rad)); return(true); }
public static SrdXrResult CreateSession(out IntPtr session) { var devices = new SrdXrDeviceInfo[1]; var resultED = SRDCorePlugin.EnumerateDevices(devices, (uint)devices.Length); SrdXrSessionCreateInfo info; { info.platform_id = SrdXrPlatformId.PLATFORM_ID_SRD; info.coordinate_system = SrdXrCoordinateSystem.COORDINATE_SYSTEM_LEFT_Y_UP_Z_FORWARD; info.coordinate_unit = SrdXrCoordinateUnit.COORDINATE_UNIT_METER; info.device = devices[0]; } var resultCS = XRRuntimeAPI.CreateSession(ref info, out session); return((resultED != SrdXrResult.SUCCESS) ? resultED : resultCS); }
public static SrdXrResult EnumerateDevices([In, Out] SrdXrDeviceInfo[] devices, UInt32 loadCount) { var result = XRRuntimeAPI.EnumerateDevices(devices, loadCount); if (result != SrdXrResult.SUCCESS) { for (int i = 0; i < loadCount; i++) { devices[i].device_index = 0; devices[i].device_serial_number = ""; devices[i].primary_monitor_rectangle = new SrdXrRect(0, 0, 0, 0); devices[i].target_monitor_rectangle = new SrdXrRect(0, 0, 0, 0); } } return(result); }
public static SrdXrResult GetFacePose(IntPtr session, out Pose headPose, out Pose eyePoseL, out Pose eyePoseR) { var views = new SrdXrView[3]; var viewLocateInfo = new SrdXrViewLocateInfo(); { viewLocateInfo.view_configuration_type = SrdXrViewConfigurationType.VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO; } var xrResult = XRRuntimeAPI.LocateViews(session, ref viewLocateInfo, views); headPose = ToUnityPose(views[0].pose); eyePoseL = ToUnityPose(views[1].pose); eyePoseR = ToUnityPose(views[2].pose); return(xrResult); }
public static SrdXrResult GetProjectionMatrix(IntPtr session, float nearClip, float farClip, out Matrix4x4 leftProjectionMatrix, out Matrix4x4 rightProjectionMatrix) { var projMat = new SrdXrProjectionMatrix(); var projectionMatrixInfo = new SrdXrProjectionMatrixInfo { graphics_api = XRRuntimeGraphicsDeviceType[SystemInfo.graphicsDeviceType], coordinate_system = SrdXrCoordinateSystem.COORDINATE_SYSTEM_RIGHT_Y_UP_Z_FORWARD, near_clip = nearClip, far_clip = farClip, reversed_z = false }; var xrResult = XRRuntimeAPI.GetProjectionMatrix(session, ref projectionMatrixInfo, out projMat); leftProjectionMatrix = ToUnityMatrix4x4(projMat.left_projection); rightProjectionMatrix = ToUnityMatrix4x4(projMat.right_projection); return(xrResult); }
public static SrdXrResult DestroySession(out IntPtr session) { return(XRRuntimeAPI.DestroySession(out session)); }
public static void UnlinkXrLibraryWin64() { XRRuntimeAPI.UnlinkXrLibraryWin64(); }
public static SrdXrResult SetGraphicsAPI(IntPtr session, UnityEngine.Rendering.GraphicsDeviceType graphicsAPI) { return(XRRuntimeAPI.SetGraphicsAPI(session, XRRuntimeGraphicsDeviceType[graphicsAPI])); }
public static void GenerateTextureAndShaders(IntPtr session, ref SrdXrTexture leftTextureData, ref SrdXrTexture rightTextureData, ref SrdXrTexture outTextureData) { GL.IssuePluginEvent(XRRuntimeAPI.GetGenerateTextureAndShadersPtr(session, ref leftTextureData, ref rightTextureData, ref outTextureData), 0); }
public static SrdXrResult ShowCameraWindow(IntPtr session, bool show) { return(XRRuntimeAPI.ShowCameraWindow(session, show)); }
public static int CountDevices() { return((int)XRRuntimeAPI.CountDevices()); }
public static SrdXrResult GetDeviceState(IntPtr session, out SrdXrDeviceState device_state) { return(XRRuntimeAPI.GetDeviceState(session, out device_state)); }
public static bool LinkXrLibraryWin64() { return(XRRuntimeAPI.LinkXrLibraryWin64()); }
public static SrdXrResult PollEvent(IntPtr session, out SrdXrEventDataBuffer eventData) { return(XRRuntimeAPI.PollEvent(session, out eventData)); }
public static SrdXrResult EndSession(IntPtr session) { return(XRRuntimeAPI.EndSession(session)); }
public static SrdXrResult SetActiveStateCrosstalkCorrection(IntPtr session, bool state) { var settings = new SrdXrCrosstalkCorrectionSettings(state); return(XRRuntimeAPI.SetCrosstalkCorrectionSettings(session, ref settings)); }