/// <summary>
        /// World Space to View Space
        /// </summary>
        public void Execute()
        {
            var cameraPosition    = RenderingPipelineRegister.Instance.Camera.Position;
            var cameraRotation    = RenderingPipelineRegister.Instance.Camera.Rotation;
            var translationMatrix = MatrixTool.CreateTranslationMatrix(-cameraPosition.X, -cameraPosition.Y, -cameraPosition.Z);
            var rotationMatrix    = MatrixTool.CreateRotationMatrix(-cameraRotation.X, -cameraRotation.Y, -cameraRotation.Z);
            var projectionMatrix  = RenderingPipelineRegister.Instance.Camera.GetProjectionMatrix();

            foreach (var vertex in RenderingPipelineRegister.Instance.VertexList)
            {
                var position = MatrixTool.VectorToMatrix(vertex.WorldPosition);

                if (MatrixTool.TryMul(translationMatrix, position, out position))
                {
                    if (MatrixTool.TryMul(rotationMatrix, position, out position))
                    {
                        if (MatrixTool.TryMul(projectionMatrix, position, out position))
                        {
                            position.TryGetValue(0, 0, out vertex.WorldPosition.X);
                            position.TryGetValue(0, 1, out vertex.WorldPosition.Y);
                            position.TryGetValue(0, 2, out vertex.WorldPosition.Z);
                        }
                    }
                }
            }
        }
        public void Execute()
        {
            var screenMappingMatrix = MatrixTool.CreateScreenMappingMatrix(RenderingPipelineRegister.Instance.Width, RenderingPipelineRegister.Instance.Height);

            foreach (var vertex in RenderingPipelineRegister.Instance.VertexList)
            {
                var position = MatrixTool.VectorToMatrix(vertex.WorldPosition);
                if (MatrixTool.TryMul(screenMappingMatrix, position, out position))
                {
                    position.TryGetValue(0, 0, out vertex.WorldPosition.X);
                    position.TryGetValue(0, 1, out vertex.WorldPosition.Y);
                    position.TryGetValue(0, 2, out vertex.WorldPosition.Z);
                }
            }
        }