caching projection matrix in the camera and constant access for uniform locations in shaders