protocolize the camera base class and define types for cube, orthographic, and perspective cameras