public static void UpdateParameters(RenderContext context, CameraComponent camera) { if (camera == null) throw new ArgumentNullException("camera"); // Setup viewport size var currentViewport = context.GraphicsDevice.Viewport; var aspectRatio = currentViewport.AspectRatio; // Update the aspect ratio if (camera.UseCustomAspectRatio) { aspectRatio = camera.AspectRatio; } // If the aspect ratio is calculated automatically from the current viewport, update matrices here camera.Update(aspectRatio); // Store the current view/projection matrix in the context var viewParameters = context.Parameters; viewParameters.Set(TransformationKeys.View, camera.ViewMatrix); viewParameters.Set(TransformationKeys.Projection, camera.ProjectionMatrix); viewParameters.Set(TransformationKeys.ViewProjection, camera.ViewProjectionMatrix); viewParameters.Set(CameraKeys.NearClipPlane, camera.NearClipPlane); viewParameters.Set(CameraKeys.FarClipPlane, camera.FarClipPlane); viewParameters.Set(CameraKeys.VerticalFieldOfView, camera.VerticalFieldOfView); viewParameters.Set(CameraKeys.OrthoSize, camera.OrthographicSize); viewParameters.Set(CameraKeys.ViewSize, new Vector2(currentViewport.Width, currentViewport.Height)); viewParameters.Set(CameraKeys.AspectRatio, aspectRatio); //viewParameters.Set(CameraKeys.FocusDistance, camera.FocusDistance); }