Skip to content

Commit 750a529

Browse files
committed
Moved grid rendering capability to debug renderer
1 parent 2c4b82e commit 750a529

File tree

4 files changed

+43
-29
lines changed

4 files changed

+43
-29
lines changed

engine/render/renderer/renderer/DebugRenderer3D.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,27 @@ void DebugRenderer3D::Initialise(const String& globalDataAttributeName)
3939
{
4040
perFrameVertexBuffers[i] = Vulkan::VertexBuffer(sizeof(LineVertex) * MAX_LINES);
4141
}
42+
43+
gridMaterial = Vulkan::Material(
44+
Vulkan::Shader::Builder()
45+
.FromVertexShader("assets/shaders/Grid3D.vert.spv")
46+
.WithGlobalData3DUniform()
47+
.Build(),
48+
Vulkan::Shader::Builder().FromFragmentShader("assets/shaders/Grid3D.frag.spv").Build(),
49+
false);
4250
}
4351

4452
void DebugRenderer3D::Destroy()
4553
{
4654
lineMaterial.Free();
4755
for (auto it = perFrameVertexBuffers.CreateFIterator(); it; ++it) it->Free();
56+
gridMaterial.~Material();
4857
}
4958

5059
void DebugRenderer3D::RecreateMaterials()
5160
{
5261
lineMaterial.Recreate();
62+
gridMaterial.Recreate();
5363
}
5464

5565
// Wire primitives
@@ -86,11 +96,29 @@ void DebugRenderer3D::RenderLines(Vulkan::CommandBuffer& buffer,
8696
Vulkan::Utils::Draw(buffer.Get(), lines.Count(), 1, 0, 0);
8797
}
8898

99+
void DebugRenderer3D::RenderGrid(Vulkan::CommandBuffer& commandBuffer,
100+
const uint64_t& globalDataSize,
101+
const void* globalData)
102+
{
103+
if (!drawGrid) return;
104+
105+
gridMaterial.SetUniformData(globalDataId, globalDataSize, globalData);
106+
gridMaterial.Bind(commandBuffer);
107+
108+
Vulkan::Utils::Draw(commandBuffer.Get(), 6, 1, 0, 0);
109+
}
110+
89111
void DebugRenderer3D::Render(Vulkan::CommandBuffer& commandBuffer,
90112
const uint64_t& globalDataSize,
91113
const void* globalData,
92114
uint32_t currentFrame)
93115
{
94116
RenderLines(commandBuffer, globalDataSize, globalData, currentFrame);
117+
RenderGrid(commandBuffer, globalDataSize, globalData);
118+
}
119+
120+
void DebugRenderer3D::SetGridEnabled(bool enabled)
121+
{
122+
drawGrid = enabled;
95123
}
96124
} // namespace Siege

engine/render/renderer/renderer/DebugRenderer3D.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class DebugRenderer3D
3131
// Wire primitives
3232
void DrawLine(const Vec3& origin, const Vec3& destination, const IColour& colour);
3333

34+
void SetGridEnabled(bool enabled);
35+
3436
void Render(Vulkan::CommandBuffer& commandBuffer,
3537
const uint64_t& globalDataSize,
3638
const void* globalData,
@@ -55,13 +57,21 @@ class DebugRenderer3D
5557
const void* globalData,
5658
uint32_t currentFrame);
5759

60+
void RenderGrid(Vulkan::CommandBuffer& commandBuffer,
61+
const uint64_t& globalDataSize,
62+
const void* globalData);
63+
5864
Vulkan::Material lineMaterial;
5965

6066
MHArray<Vulkan::VertexBuffer> perFrameVertexBuffers;
6167

6268
Hash::StringId globalDataId;
6369

6470
MSArray<LineVertex, MAX_LINES> lines;
71+
72+
Vulkan::Material gridMaterial;
73+
74+
bool drawGrid;
6575
};
6676
} // namespace Siege
6777

engine/render/renderer/renderer/Renderer3D.cpp

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ namespace Siege
1717
// static initialisation
1818
Hash::StringId Renderer3D::globalDataId;
1919

20-
Vulkan::Material Renderer3D::gridMaterial;
21-
2220
ModelRenderer Renderer3D::modelRenderer;
2321
DebugRenderer3D Renderer3D::debugRenderer;
2422
BillboardRenderer Renderer3D::billboardRenderer;
@@ -38,14 +36,6 @@ void Renderer3D::Initialise()
3836
lightRenderer.Initialise("globalData");
3937
textRenderer.Initialise("globalData");
4038
quadRenderer3D.Initialise("globalData");
41-
42-
gridMaterial = Vulkan::Material(
43-
Vulkan::Shader::Builder()
44-
.FromVertexShader("assets/shaders/Grid3D.vert.spv")
45-
.WithGlobalData3DUniform()
46-
.Build(),
47-
Vulkan::Shader::Builder().FromFragmentShader("assets/shaders/Grid3D.frag.spv").Build(),
48-
false);
4939
}
5040

5141
void Renderer3D::DrawBillboard(const Vec3& position,
@@ -102,10 +92,6 @@ void Renderer3D::Render(uint32_t currentFrame,
10292

10393
modelRenderer.Render(commandBuffer, globalDataSize, &global3DData);
10494

105-
#ifdef ENABLE_GRID
106-
RenderGrid(commandBuffer, global3DData);
107-
#endif
108-
10995
lightRenderer.Render(commandBuffer, globalDataSize, &global3DData, currentFrame);
11096
debugRenderer.Render(commandBuffer, globalDataSize, &global3DData, currentFrame);
11197
billboardRenderer.Render(commandBuffer, globalDataSize, &global3DData, currentFrame);
@@ -118,12 +104,9 @@ void Renderer3D::DrawLine(const Vec3& origin, const Vec3& destination, const ICo
118104
debugRenderer.DrawLine(origin, destination, colour);
119105
}
120106

121-
void Renderer3D::RenderGrid(Vulkan::CommandBuffer& commandBuffer, const GlobalData& globalData)
107+
void Renderer3D::SetGridEnabled(bool enabled)
122108
{
123-
gridMaterial.SetUniformData(globalDataId, sizeof(globalData), &globalData);
124-
gridMaterial.Bind(commandBuffer);
125-
126-
Vulkan::Utils::Draw(commandBuffer.GetActiveCommandBuffer(), 6, 1, 0, 0);
109+
debugRenderer.SetGridEnabled(enabled);
127110
}
128111

129112
void Renderer3D::RecreateMaterials()
@@ -134,8 +117,6 @@ void Renderer3D::RecreateMaterials()
134117
lightRenderer.RecreateMaterials();
135118
quadRenderer3D.RecreateMaterials();
136119
textRenderer.RecreateMaterials();
137-
138-
gridMaterial.Recreate();
139120
}
140121

141122
void Renderer3D::Flush()
@@ -155,8 +136,6 @@ void Renderer3D::DestroyRenderer3D()
155136
lightRenderer.Free();
156137
quadRenderer3D.Free();
157138
textRenderer.Free();
158-
159-
gridMaterial.~Material();
160139
}
161140

162141
void Renderer3D::Update()

engine/render/renderer/renderer/Renderer3D.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class Renderer3D
4646
Vulkan::Texture2D* texture = nullptr);
4747

4848
// Debug rendering
49-
// TODO(Aryeh): Move this to it's own renderer module?
49+
// TODO(Aryeh): Move this to its own renderer module?
5050
static void DrawLine(const Vec3& origin, const Vec3& destination, const IColour& colour);
5151

5252
static void DrawPointLight(const Vec3& position,
@@ -67,6 +67,8 @@ class Renderer3D
6767
IColour colour,
6868
Vulkan::Texture2D* texture = nullptr);
6969

70+
static void SetGridEnabled(bool enabled);
71+
7072
static void RecreateMaterials();
7173

7274
static void Render(uint32_t currentFrame,
@@ -80,9 +82,6 @@ class Renderer3D
8082

8183
private:
8284

83-
// static void RenderRects(VkCommandBuffer& commandBuffer, const GlobalData& globalData);
84-
static void RenderGrid(Vulkan::CommandBuffer& commandBuffer, const GlobalData& globalData);
85-
8685
static Hash::StringId globalDataId;
8786

8887
// FIXME(Aryeh): These statics are evil and need to be removed.
@@ -94,8 +93,6 @@ class Renderer3D
9493
static TextRenderer textRenderer;
9594
static QuadRenderer3D quadRenderer3D;
9695

97-
static Vulkan::Material gridMaterial;
98-
9996
static GlobalData global3DData;
10097
};
10198
} // namespace Siege

0 commit comments

Comments
 (0)