From 75dd9e13c930050d7c61e31a2ddcc361823b4e00 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Fri, 30 Aug 2024 21:58:13 +0200 Subject: [PATCH] Fix line portals drawn as opaque --- src/rendering/hwrenderer/doom_levelmesh.cpp | 8 ++++++-- src/rendering/hwrenderer/doom_levelmesh.h | 1 + src/rendering/hwrenderer/scene/hw_drawinfo.cpp | 3 +++ 3 files changed, 10 insertions(+), 2 deletions(-) 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); }