From a conversation with thebolt:

  • first step would be to actually have a perspective transform there instead of just having a fov and assume normal "straight" perspective
  • but this also reults in taht csFrustum cannot actually represent the frustum.. and that the cullers for example need to handle any-shaped frustum (including a box.. aka orthogonal projection)
  • replace the frustum with a general set of planes, provided by the camera
  • either have a csPerspectiveCamera, csOrthoCamera and so on to generate the planes, or derive the clip planes from the projection matrix - but "its not terribly cheap though so you shouldn't do it too often"
  • the "common camera" should be generic and display the differences via different camera transform (& returned clipplanes)
  • have helpers to build a perspective transform or an ortho transform (4x4 matrix) from "easy to know values"
  • but e.g. an iProjectionCamera to query the FOV the cam was created with. similar for ortho projections