Pyrogenesis  trunk
SilhouetteRenderer.h
Go to the documentation of this file.
1 /* Copyright (C) 2014 Wildfire Games.
2  * This file is part of 0 A.D.
3  *
4  * 0 A.D. is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * 0 A.D. is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef INCLUDED_SILHOUETTERENDERER
19 #define INCLUDED_SILHOUETTERENDERER
20 
21 #include "graphics/Overlay.h"
23 
24 class CCamera;
25 class CModel;
26 class CPatch;
27 class SceneCollector;
28 
30 {
31 public:
33 
34  void AddOccluder(CPatch* patch);
35  void AddOccluder(CModel* model);
36  void AddCaster(CModel* model);
37 
38  void ComputeSubmissions(const CCamera& camera);
39  void RenderSubmitOverlays(SceneCollector& collector);
40  void RenderSubmitOccluders(SceneCollector& collector);
41  void RenderSubmitCasters(SceneCollector& collector);
42 
43  void RenderDebugOverlays(const CCamera& camera);
44 
45  void EndFrame();
46 
47 private:
49 
50  std::vector<CPatch*> m_SubmittedPatchOccluders;
51  std::vector<CModel*> m_SubmittedModelOccluders;
52  std::vector<CModel*> m_SubmittedModelCasters;
53 
54  std::vector<CPatch*> m_VisiblePatchOccluders;
55  std::vector<CModel*> m_VisibleModelOccluders;
56  std::vector<CModel*> m_VisibleModelCasters;
57 
58  struct DebugBounds
59  {
62  };
63 
64  struct DebugRect
65  {
67  u16 x0, y0, x1, y1;
68  };
69 
70  std::vector<DebugBounds> m_DebugBounds;
71  std::vector<DebugRect> m_DebugRects;
72 
73  std::vector<SOverlaySphere> m_DebugSpheres;
74 };
75 
76 #endif // INCLUDED_SILHOUETTERENDERER
bool m_DebugEnabled
Definition: SilhouetteRenderer.h:48
uint16_t u16
Definition: types.h:38
void ComputeSubmissions(const CCamera &camera)
Definition: SilhouetteRenderer.cpp:209
Definition: Shapes.h:36
CColor color
Definition: SilhouetteRenderer.h:60
std::vector< CModel * > m_SubmittedModelCasters
Definition: SilhouetteRenderer.h:52
CBoundingBoxAligned bounds
Definition: SilhouetteRenderer.h:61
void AddOccluder(CPatch *patch)
Definition: SilhouetteRenderer.cpp:44
u16 y1
Definition: SilhouetteRenderer.h:67
This interface accepts renderable objects.
Definition: Scene.h:83
Definition: SilhouetteRenderer.h:64
void RenderSubmitOverlays(SceneCollector &collector)
Definition: SilhouetteRenderer.cpp:423
void EndFrame()
Definition: SilhouetteRenderer.cpp:493
Definition: Camera.h:39
void AddCaster(CModel *model)
Definition: SilhouetteRenderer.cpp:54
std::vector< CPatch * > m_SubmittedPatchOccluders
Definition: SilhouetteRenderer.h:50
std::vector< CModel * > m_VisibleModelCasters
Definition: SilhouetteRenderer.h:56
Definition: Patch.h:48
void RenderDebugOverlays(const CCamera &camera)
Definition: SilhouetteRenderer.cpp:444
Definition: SilhouetteRenderer.h:58
SilhouetteRenderer()
Definition: SilhouetteRenderer.cpp:39
std::vector< CPatch * > m_VisiblePatchOccluders
Definition: SilhouetteRenderer.h:54
std::vector< DebugBounds > m_DebugBounds
Definition: SilhouetteRenderer.h:70
std::vector< SOverlaySphere > m_DebugSpheres
Definition: SilhouetteRenderer.h:73
void RenderSubmitOccluders(SceneCollector &collector)
Definition: SilhouetteRenderer.cpp:429
Definition: BoundingBoxAligned.h:35
static size_t model
Definition: x86_x64.cpp:221
std::vector< CModel * > m_VisibleModelOccluders
Definition: SilhouetteRenderer.h:55
std::vector< CModel * > m_SubmittedModelOccluders
Definition: SilhouetteRenderer.h:51
std::vector< DebugRect > m_DebugRects
Definition: SilhouetteRenderer.h:71
Definition: Model.h:48
Definition: SilhouetteRenderer.h:29
void RenderSubmitCasters(SceneCollector &collector)
Definition: SilhouetteRenderer.cpp:438
CColor color
Definition: SilhouetteRenderer.h:66