/// <inheritdoc /> public CameraInfoCache(ICameraInfo cameraInfo) { // raw // world space -> camera space MatrixView = Matrix4DEx.LookAtRH(cameraInfo.Position.ToVector3D(), cameraInfo.Target.ToVector3D(), cameraInfo.UpVector); MatrixViewInverse = MatrixView.Inverse(); // camera space -> clip space MatrixProjection = cameraInfo.Projection.GetMatrixProjection(); MatrixProjectionInverse = MatrixProjection.Inverse(); // clip space -> screen space MatrixViewport = Matrix4DEx.Viewport(cameraInfo.Viewport); MatrixViewportInverse = MatrixViewport.Inverse(); // multiplicatives // world space -> camera space -> clip space MatrixViewProjection = MatrixView * MatrixProjection; MatrixViewProjectionInverse = MatrixViewProjection.Inverse(); // world space -> camera space -> clip space -> screen space MatrixViewProjectionViewport = MatrixViewProjection * MatrixViewport; MatrixViewProjectionViewportInverse = MatrixViewProjectionViewport.Inverse(); }
public CameraInfoCache(ICameraInfo cameraInfo) { MatrixView = Matrix4DEx.LookAtRH(cameraInfo.Position.ToVector3D(), cameraInfo.Target.ToVector3D(), cameraInfo.UpVector); MatrixViewInverse = MatrixView.Inverse(); MatrixProjection = cameraInfo.Projection.GetMatrixProjection(); MatrixProjectionInverse = MatrixProjection.Inverse(); MatrixViewport = Matrix4DEx.Viewport(cameraInfo.Viewport); MatrixViewportInverse = MatrixViewport.Inverse(); MatrixViewProjection = MatrixView * MatrixProjection; MatrixViewProjectionInverse = MatrixViewProjection.Inverse(); MatrixViewProjectionViewport = MatrixViewProjection * MatrixViewport; MatrixViewProjectionViewportInverse = MatrixViewProjectionViewport.Inverse(); }