1 #ifndef MSP_GL_OCCLUDEDSCENE_H_
2 #define MSP_GL_OCCLUDEDSCENE_H_
14 A scene that performs occlusion queries on renderables to skip those that are
15 entirely occluded by others.
17 class OccludedScene: public Scene
23 struct OccludedRenderable
25 Renderable *renderable;
26 const Geometry::BoundingSphere<float, 3> *bounding_sphere;
34 typedef std::set<Renderable *> RenderableSet;
35 typedef std::vector<OccludedRenderable> OccludedArray;
37 const Mesh &bounding_mesh;
38 const Program &bounding_shader;
39 RenderableSet renderables;
40 float occluder_min_size;
41 mutable OccludedArray occluded_cache;
42 mutable bool cache_dirty;
48 virtual void add(Renderable &);
49 virtual void remove(Renderable &);
52 void populate_cache() const;
55 virtual void setup_frame(Renderer &);
56 virtual void finish_frame();
58 virtual void render(Renderer &, Tag = Tag()) const;