00001 #ifndef VRS_OPENGL_DEPTHOFFIELDRENDERERGL_H
00002 #define VRS_OPENGL_DEPTHOFFIELDRENDERERGL_H
00003
00004 #include <vrs/sg/multiscenerenderer.h>
00005
00006 namespace VRS {
00007
00008 class Camera;
00009
00010 class VRS_CORE_API DepthOfFieldRendererGL : public MultiSceneRenderer {
00011 public:
00012 DepthOfFieldRendererGL(
00013 Camera* camera,
00014 unsigned int samples = 4,
00015 double sizeX = 1.0,
00016 double sizeY = 1.0,
00017 double focus = 1.0
00018 );
00020
00025 void setCamera(Camera* camera);
00027
00028 Camera* getCamera() const;
00030
00031 void setNumberOfSamples(unsigned int samples);
00033
00041 unsigned int getNumberOfSamples() const;
00043
00044 void setSizeX(double sizeX);
00046
00047 double getSizeX() const;
00049
00050 void setSizeY(double sizeY);
00052
00053 double getSizeY() const;
00055
00056 void setFocus(double focus);
00058
00060 double getFocus() const;
00062
00063 virtual void start(Engine*);
00065 virtual void stop(Engine*);
00067
00068 virtual bool needSceneEvaluation(Engine*);
00070 virtual void preEvaluateScene(Engine*);
00072 virtual void postEvaluateScene(Engine*);
00074
00075 VRS_TYPEINFO(DepthOfFieldRendererGL, MultiSceneRenderer);
00076 VRS_SERIALIZABLE(DepthOfFieldRendererGL);
00077
00078 protected:
00079 DepthOfFieldRendererGL();
00080
00081 private:
00082 unsigned int m_samples;
00083 double m_sizeX;
00084 double m_sizeY;
00085 double m_focus;
00086 SO<Camera> m_camera;
00087
00088 unsigned int m_pass;
00089 int m_haveAccum;
00090 };
00091
00092 }
00093
00094 #endif // VRS_OPENGL_DEPTHOFFIELDRENDERERGL_H