PolyCamera.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 "PolyString.h"
  13. #include "PolyGlobals.h"
  14. #include "PolyCoreServices.h"
  15. #include "PolySceneEntity.h"
  16. #include "PolySceneRenderTexture.h"
  17. namespace Polycode {
  18. class _PolyExport Camera : public SceneEntity {
  19. public:
  20. Camera(Scene *parentScene);
  21. ~Camera();
  22. void buildFrustrumPlanes();
  23. bool isSphereInFrustrum(Vector3 pos, float fRadius);
  24. bool canSee(SceneEntity *entity);
  25. void setOrthoMode(bool mode);
  26. bool getOrthoMode();
  27. void setFOV(float fov);
  28. float getFOV();
  29. void doCameraTransform();
  30. void setLightDepthTexture(Texture *texture);
  31. void setParentScene(Scene *parentScene);
  32. bool hasFilterShader();
  33. void drawFilter();
  34. void setExposureLevel(float level);
  35. float getExposureLevel();
  36. void createPostFilter(Material *shaderMaterial);
  37. void setPostFilter(String shaderName);
  38. private:
  39. float exposureLevel;
  40. bool orthoMode;
  41. float fov;
  42. float frustumPlanes[6][4];
  43. Scene *parentScene;
  44. bool fovSet;
  45. Material *filterShaderMaterial;
  46. Texture *originalSceneTexture;
  47. Texture *zBufferSceneTexture;
  48. vector<ShaderBinding*> localShaderOptions;
  49. bool _hasFilterShader;
  50. };
  51. }