PolyCamera.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * PolyCamera.h
  3. * Polycode
  4. *
  5. * Created by Ivan Safrin on 3/26/08.
  6. * Copyright 2008 Ivan Safrin. All rights reserved.
  7. *
  8. */
  9. // @package Scene
  10. #pragma once
  11. #include "PolyLogger.h"
  12. #include "PolyGlobals.h"
  13. #include "PolyCoreServices.h"
  14. #include "PolySceneEntity.h"
  15. #include "PolySceneRenderTexture.h"
  16. namespace Polycode {
  17. class _PolyExport Camera : public SceneEntity {
  18. public:
  19. Camera(Scene *parentScene);
  20. ~Camera();
  21. void buildFrustrumPlanes();
  22. bool isSphereInFrustrum(Vector3 pos, float fRadius);
  23. bool canSee(SceneEntity *entity);
  24. void setOrthoMode(bool mode);
  25. bool getOrthoMode();
  26. void setFOV(float fov);
  27. float getFOV();
  28. void doCameraTransform();
  29. void setLightDepthTexture(Texture *texture);
  30. void setParentScene(Scene *parentScene);
  31. bool hasFilterShader();
  32. void drawFilter();
  33. void setExposureLevel(float level);
  34. float getExposureLevel();
  35. void createPostFilter(Material *shaderMaterial);
  36. void setPostFilter(string shaderName);
  37. private:
  38. float exposureLevel;
  39. bool orthoMode;
  40. float fov;
  41. float frustumPlanes[6][4];
  42. Scene *parentScene;
  43. bool fovSet;
  44. Material *filterShaderMaterial;
  45. Texture *originalSceneTexture;
  46. Texture *zBufferSceneTexture;
  47. vector<ShaderBinding*> localShaderOptions;
  48. bool _hasFilterShader;
  49. };
  50. }