diff --git a/include/Engine/Rendering/Renderer.h b/include/Engine/Rendering/Renderer.h
index 04754514..936b0359 100644
--- a/include/Engine/Rendering/Renderer.h
+++ b/include/Engine/Rendering/Renderer.h
@@ -23,6 +23,7 @@
#include "imgui/imgui.h"
#include "TextPass.h"
#include "Util/CommonFunctions.h"
+#include "Core/PerformanceTimer.h"
class Renderer : public IRenderer
{
diff --git a/resources/Schema/Entities/GameMap.xml b/resources/Schema/Entities/GameMap.xml
index 84a1e363..c3a16361 100644
--- a/resources/Schema/Entities/GameMap.xml
+++ b/resources/Schema/Entities/GameMap.xml
@@ -144,7 +144,7 @@
-
+
@@ -206,14 +206,16 @@
-
+
-
+
+
+
diff --git a/src/Engine/Rendering/Renderer.cpp b/src/Engine/Rendering/Renderer.cpp
index be84160c..85687bf5 100644
--- a/src/Engine/Rendering/Renderer.cpp
+++ b/src/Engine/Rendering/Renderer.cpp
@@ -99,34 +99,48 @@ void Renderer::Draw(RenderFrame& frame)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//Clear other buffers
+ PerformanceTimer::StartTimer("Renderer-ClearBuffers");
m_PickingPass->ClearPicking();
m_DrawFinalPass->ClearBuffer();
m_DrawBloomPass->ClearBuffer();
+ PerformanceTimer::StopTimer("Renderer-ClearBuffers");
for (auto scene : frame.RenderScenes){
+ PerformanceTimer::StartTimer("Renderer-Depth");
SortRenderJobsByDepth(*scene);
GLERROR("SortByDepth");
+ PerformanceTimer::StartTimerAndStopPrevious("Renderer-Drawing PickingPass");
m_PickingPass->Draw(*scene);
GLERROR("Drawing pickingpass");
+ PerformanceTimer::StartTimerAndStopPrevious("Renderer-Generate Frustrums");
m_LightCullingPass->GenerateNewFrustum(*scene);
GLERROR("Generate frustums");
+ PerformanceTimer::StartTimerAndStopPrevious("Renderer-Filling Light List");
m_LightCullingPass->FillLightList(*scene);
GLERROR("Filling light list");
+ PerformanceTimer::StartTimerAndStopPrevious("Renderer-Light Culling");
m_LightCullingPass->CullLights(*scene);
GLERROR("LightCulling");
+ PerformanceTimer::StartTimerAndStopPrevious("Renderer-Draw Geometry+Light");
m_DrawFinalPass->Draw(*scene);
GLERROR("Draw Geometry+Light");
//m_DrawScenePass->Draw(*scene);
+ PerformanceTimer::StartTimerAndStopPrevious("Renderer-Draw Text");
m_TextPass->Draw(*scene, *m_DrawFinalPass->FinalPassFrameBuffer());
GLERROR("Draw Text");
-
+ PerformanceTimer::StopTimer("Renderer-Draw Text");
}
+ PerformanceTimer::StartTimer("Renderer-Draw Bloom");
m_DrawBloomPass->Draw(m_DrawFinalPass->BloomTexture());
+ PerformanceTimer::StopTimer("Renderer-Draw Bloom");
if (m_DebugTextureToDraw == 0) {
+ PerformanceTimer::StartTimer("Renderer-Color Correction Pass");
m_DrawColorCorrectionPass->Draw(m_DrawFinalPass->SceneTexture(), m_DrawBloomPass->GaussianTexture(), m_DrawFinalPass->SceneTextureLowRes(), m_DrawFinalPass->BloomTextureLowRes(), frame.Gamma, frame.Exposure);
+ PerformanceTimer::StopTimer("Renderer-Color Correction Pass");
}
+ PerformanceTimer::StartTimer("Renderer-Misc Debug Draws");
if (m_DebugTextureToDraw == 1) {
m_DrawScreenQuadPass->Draw(m_DrawFinalPass->SceneTexture());
}
@@ -145,10 +159,13 @@ void Renderer::Draw(RenderFrame& frame)
if (m_DebugTextureToDraw == 6) {
m_DrawScreenQuadPass->Draw(m_PickingPass->PickingTexture());
}
+ PerformanceTimer::StopTimer("Renderer-Misc Debug Draws");
+ PerformanceTimer::StartTimer("Renderer-ImGuiRenderPass");
m_ImGuiRenderPass->Draw();
GLERROR("Imgui draw");
glfwSwapBuffers(m_Window);
+ PerformanceTimer::StopTimer("Renderer-ImGuiRenderPass");
}
PickData Renderer::Pick(glm::vec2 screenCoord)