More functional 3D Graphics (todo: add perspective)