Beispiel #1
0
        private void SetProjectionOffset()
        {
            viewCenter             = OculusClient.GetScreenSize().X * 0.212f; // 0.25f 0.212f
            eyeProjectionShift     = viewCenter - OculusClient.GetLensSeparationDistance() * 0.5f;
            projectionCenterOffset = 4.0f * eyeProjectionShift / OculusClient.GetScreenSize().X;

            projCenter = originalProjectionMatrix;
            projLeft   = Matrix.CreateTranslation(projectionCenterOffset, 0, 0) * projCenter;
            projRight  = Matrix.CreateTranslation(-projectionCenterOffset, 0, 0) * projCenter;

            halfIPD = OculusClient.GetInterpupillaryDistance() * 0.5f;

            viewLeft  = viewMatrix * Matrix.CreateTranslation(halfIPD, 0, 0);
            viewRight = viewMatrix * Matrix.CreateTranslation(-halfIPD, 0, 0);
        }
Beispiel #2
0
        private void InitOculus()
        {
            // Load the Oculus Rift Distortion Shader
            // https://mega.co.nz/#!E4YkjJ6K!MuIDuB78NwgHsGgeONikDAT_OLJQ0ZeLXbfGF1OAhzw
            oculusRiftDistortionShader = Content.Load <Effect>(@"Shader/OculusRift");

            aspectRatio = (float)(OculusClient.GetScreenResolution().X * 0.5f / (float)(OculusClient.GetScreenResolution().Y));
            fov_d       = OculusClient.GetEyeToScreenDistance();
            fov_x       = OculusClient.GetScreenSize().Y *scaleImageFactor;
            yfov        = 2.0f * (float)Math.Atan(fov_x / fov_d);

            // Set ProjectionMatrix
            originalProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(yfov, aspectRatio, 0.05f, 10000.0f);

            // Init left and right RenderTarget
            renderTargetLeft  = new RenderTarget2D(device, graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight, true, SurfaceFormat.Bgr565, DepthFormat.Depth24Stencil8);
            renderTargetRight = new RenderTarget2D(device, graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight, true, SurfaceFormat.Bgr565, DepthFormat.Depth24Stencil8);

            OculusClient.SetSensorPredictionTime(0, 0.03f);
            UpdateResolutionAndRenderTargets();
        }