camera: add support for arbitrary vanishing points in perspective camera