diff --git a/src/rendering/hwrenderer/doom_levelmesh.cpp b/src/rendering/hwrenderer/doom_levelmesh.cpp index f1477db3f..d245a2882 100644 --- a/src/rendering/hwrenderer/doom_levelmesh.cpp +++ b/src/rendering/hwrenderer/doom_levelmesh.cpp @@ -62,8 +62,12 @@ ADD_STAT(lightmap) ADD_STAT(levelmesh) { + auto& stats = level.levelMesh->LastFrameStats; FString out; - out.Format("Sides=%d, flats=%d", level.levelMesh->LastFrameStats.SidesUpdated, level.levelMesh->LastFrameStats.FlatsUpdated); + if (level.levelMesh) + out.Format("Sides=%d, flats=%d, portals=%d", stats.SidesUpdated, stats.FlatsUpdated, stats.Portals); + else + out = "No level mesh"; return out; } @@ -793,7 +797,7 @@ void DoomLevelMesh::CreateWallSurface(side_t* side, HWWallDispatcher& disp, Mesh Sides[sideIndex].Geometries.Push({ ginfo, pipelineID, sinfo.Surface->IsSky }); Sides[sideIndex].Uniforms.Push(uinfo); - AddToDrawList(Sides[sideIndex].DrawRanges, pipelineID, ginfo.IndexStart, ginfo.IndexCount, sinfo.Surface->IsSky); + AddToDrawList(Sides[sideIndex].DrawRanges, pipelineID, ginfo.IndexStart, ginfo.IndexCount, isPortal); } } diff --git a/src/rendering/hwrenderer/doom_levelmesh.h b/src/rendering/hwrenderer/doom_levelmesh.h index 515e837d4..7a8fca268 100644 --- a/src/rendering/hwrenderer/doom_levelmesh.h +++ b/src/rendering/hwrenderer/doom_levelmesh.h @@ -121,6 +121,7 @@ public: { int FlatsUpdated = 0; int SidesUpdated = 0; + int Portals = 0; }; Stats LastFrameStats, CurFrameStats; diff --git a/src/rendering/hwrenderer/scene/hw_drawinfo.cpp b/src/rendering/hwrenderer/scene/hw_drawinfo.cpp index bdaa89214..245e8601f 100644 --- a/src/rendering/hwrenderer/scene/hw_drawinfo.cpp +++ b/src/rendering/hwrenderer/scene/hw_drawinfo.cpp @@ -513,6 +513,9 @@ void HWDrawInfo::CreateScene(bool drawpsprites, FRenderState& state) } else { + if (gl_levelmesh && level.levelMesh) + level.levelMesh->CurFrameStats.Portals++; + RenderBSP(Level->HeadNode(), drawpsprites, state); }