Pyrogenesis  trunk
DecalRData.h
Go to the documentation of this file.
1 /* Copyright (C) 2023 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_DECALRDATA
19 #define INCLUDED_DECALRDATA
20 
22 #include "maths/Vector2D.h"
23 #include "maths/Vector3D.h"
27 
28 #include <vector>
29 
30 class CModelDecal;
31 class CShaderDefines;
32 class CSimulation2;
33 class ShadowMap;
34 
35 class CDecalRData : public CRenderData
36 {
37 public:
38  CDecalRData(CModelDecal* decal, CSimulation2* simulation);
39  ~CDecalRData();
40 
42 
43  void Update(CSimulation2* simulation);
44 
45  static void RenderDecals(
46  Renderer::Backend::IDeviceCommandContext* deviceCommandContext,
47  Renderer::Backend::IVertexInputLayout* vertexInputLayout,
48  const std::vector<CDecalRData*>& decals, const CShaderDefines& context, ShadowMap* shadow);
49 
50  CModelDecal* GetDecal() { return m_Decal; }
51 
52 private:
53  void BuildVertexData();
54 
55  struct SDecalVertex
56  {
60  };
61  cassert(sizeof(SDecalVertex) == 32);
62 
65 
67 
69 };
70 
71 #endif // INCLUDED_DECALRDATA
Definition: DecalRData.h:35
CSimulation2 * m_Simulation
Definition: DecalRData.h:68
CVector2D m_UV
Definition: DecalRData.h:59
IVertexInputLayout stores precompiled list of vertex attributes.
Definition: IShaderProgram.h:73
Definition: Vector3D.h:30
Class ShadowMap: Maintain the shadow map texture and perform necessary OpenGL setup, including matrix calculations.
Definition: ShadowMap.h:38
CDecalRData(CModelDecal *decal, CSimulation2 *simulation)
Definition: DecalRData.cpp:100
static Renderer::Backend::IVertexInputLayout * GetVertexInputLayout()
Definition: DecalRData.cpp:80
Public API for simulation system.
Definition: Simulation2.h:46
void Update(CSimulation2 *simulation)
Definition: DecalRData.cpp:108
CModelDecal * m_Decal
Definition: DecalRData.h:66
Definition: VertexBufferManager.h:46
Definition: RenderableObject.h:40
CVector3D m_Position
Definition: DecalRData.h:57
CVertexBufferManager::Handle m_VBDecalsIndices
Definition: DecalRData.h:64
CModelDecal * GetDecal()
Definition: DecalRData.h:50
CVector3D m_Normal
Definition: DecalRData.h:58
CVertexBufferManager::Handle m_VBDecals
Definition: DecalRData.h:63
Represents a mapping of name strings to value strings, for use with #if and #ifdef and similar condit...
Definition: ShaderDefines.h:146
Definition: Vector2D.h:31
Definition: Decal.h:49
cassert(sizeof(SDecalVertex)==32)
static void RenderDecals(Renderer::Backend::IDeviceCommandContext *deviceCommandContext, Renderer::Backend::IVertexInputLayout *vertexInputLayout, const std::vector< CDecalRData *> &decals, const CShaderDefines &context, ShadowMap *shadow)
Definition: DecalRData.cpp:118
void BuildVertexData()
Definition: DecalRData.cpp:274
Definition: DecalRData.h:55
Definition: IDeviceCommandContext.h:40