Esempio n. 1
0
			public void Load(Main m, Ovr.Eye eyeType, Ovr.FovPort fov)
			{
				this.main = m;
				this.fov = fov;
				this.eye = eyeType;
				this.Reload();
			}
Esempio n. 2
0
        //Initializing
        private void MainWindow_Load(object sender, EventArgs e)
        {
            ovr = new Ovr();
            ovr.Init();

            labelMonitorName.Text = ovr.HMDInfo.MonitorName;
            labelResolution.Text = ovr.HMDInfo.HResolution.ToString() + " / " + ovr.HMDInfo.VResolution.ToString();
            labelScreenSize.Text = ovr.HMDInfo.HScreenSize.ToString() + " / " + ovr.HMDInfo.VScreenSize.ToString();
            labelEyeToScreenDistance.Text = ovr.HMDInfo.EyeToScreenDistance.ToString();
            labelLensSeparationDistance.Text = ovr.HMDInfo.LensSeparationDistance.ToString();
            labelInterpupillaryDistance.Text = ovr.HMDInfo.InterpupillaryDistance.ToString();
            labelDistortionK.Text = ovr.HMDInfo.DistortionK[0].ToString() + " / " + ovr.HMDInfo.DistortionK[1].ToString() + " / " + ovr.HMDInfo.DistortionK[2].ToString() + " / " + ovr.HMDInfo.DistortionK[3].ToString();
            labelDesktop.Text = ovr.HMDInfo.DesktopX.ToString() + " / " + ovr.HMDInfo.DesktopY.ToString();
        }
Esempio n. 3
0
			public void Render(RenderTarget2D frameBuffer, Ovr.Posef eyePose, Effect effect)
			{
				effect.Parameters["EyeToSourceUVScale"].SetValue(this.uvScale);
				effect.Parameters["EyeToSourceUVOffset"].SetValue(this.uvOffset);
				Ovr.Matrix4f[] timeWarpMatrices = this.main.VRHmd.GetEyeTimewarpMatrices(this.eye, eyePose);
				effect.Parameters["EyeRotationStart"].SetValue(Oculus.MatrixOvrToXna(timeWarpMatrices[0]));
				effect.Parameters["EyeRotationEnd"].SetValue(Oculus.MatrixOvrToXna(timeWarpMatrices[1]));
				effect.Parameters["FrameBuffer" + Lemma.Components.Model.SamplerPostfix].SetValue(frameBuffer);
				effect.CurrentTechnique.Passes[0].Apply();

				this.main.GraphicsDevice.SetVertexBuffer(this.vb);
				this.main.GraphicsDevice.Indices = this.ib;

				// Draw primitives
				this.main.GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, this.vb.VertexCount, 0, this.ib.IndexCount / 3);
				Lemma.Components.Model.DrawCallCounter++;
				Lemma.Components.Model.TriangleCounter += this.ib.IndexCount / 3;
			}
Esempio n. 4
0
		public static Matrix MatrixOvrToXna(Ovr.Matrix4f m)
		{
			return new Matrix
			(
				m.m[0, 0],
				m.m[1, 0],
				m.m[2, 0],
				m.m[3, 0],
				m.m[0, 1],
				m.m[1, 1],
				m.m[2, 1],
				m.m[3, 1],
				m.m[0, 2],
				m.m[1, 2],
				m.m[2, 2],
				m.m[3, 2],
				m.m[0, 3],
				m.m[1, 3],
				m.m[2, 3],
				m.m[3, 3]
			);
		}
Esempio n. 5
0
File: Main.cs Progetto: kleril/Lemma
		private void drawEye(Camera originalCamera, GameTime gameTime, Ovr.Posef pose, RenderTarget2D renderTarget, bool updateLights)
		{
			Quaternion quat = new Quaternion(pose.Orientation.x, pose.Orientation.y, pose.Orientation.z, pose.Orientation.w);
			this.vrCamera.RotationMatrix.Value = Matrix.CreateFromQuaternion(quat) * originalCamera.RotationMatrix;
			Vector3 viewAdjust = Vector3.TransformNormal(new Vector3(pose.Position.x, pose.Position.y, pose.Position.z), originalCamera.RotationMatrix);
			this.vrCamera.Position.Value = originalCamera.Position.Value + viewAdjust * Main.VRUnitToWorldUnit;
			Ovr.Matrix4f proj = Ovr.Hmd.GetProjection(this.vrLeftFov, originalCamera.NearPlaneDistance, originalCamera.FarPlaneDistance, (uint)Ovr.Hmd.ProjectionModifier.RightHanded);
			this.vrCamera.Projection.Value = Oculus.MatrixOvrToXna(proj);

			for (int i = 0; i < this.preframeDrawables.Count; i++)
			{
				IDrawablePreFrameComponent c = this.preframeDrawables[i];
				if (this.componentEnabled(c))
					c.DrawPreFrame(gameTime, this.renderParameters);
			}

			this.Renderer.SetRenderTargets(this.renderParameters);

			this.DrawScene(this.renderParameters);

			if (updateLights)
			{
				this.LightingManager.UpdateGlobalLights();
				this.LightingManager.RenderShadowMaps(originalCamera);
			}

			this.Renderer.PostProcess(renderTarget, this.renderParameters);

			for (int i = 0; i < this.nonPostProcessedDrawables.Count; i++)
			{
				INonPostProcessedDrawableComponent c = this.nonPostProcessedDrawables[i];
				if (this.componentEnabled(c))
					c.DrawNonPostProcessed(gameTime, this.renderParameters);
			}
		}