Perspective projection, using a matrix