- do not use floor sprites for splitting geometry.

This is way too expensive on maps with lots of sprites. Instead, run them through the case for slope sprites which should be sufficient here
Also let rendered_* count the actual draw calls, not processed objects, because that is the most relevant metric for checking performance issues.
This commit is contained in:
Christoph Oelckers 2022-01-14 00:49:57 +01:00
parent 899ced50aa
commit 8281374551
4 changed files with 3 additions and 4 deletions

View file

@ -1169,7 +1169,6 @@ void HWDrawList::DrawSorted(HWDrawInfo *di, FRenderState &state, SortNode * head
void HWDrawList::DrawSorted(HWDrawInfo *di, FRenderState &state)
{
if (drawitems.Size() == 0) return;
if (!sorted)
{
screen->mVertexData->Map();

View file

@ -100,7 +100,7 @@ void HWDrawInfo::AddFlat(HWFlat *flat)
{
// translucent portals go into the translucent border list.
list = flat->Sprite? GLDL_TRANSLUCENT : GLDL_TRANSLUCENTBORDER;
slopespr = (flat->Sprite && flat->Sprite->clipdist & TSPR_SLOPESPRITE);
slopespr = !!(flat->Sprite);//&& flat->Sprite->clipdist& TSPR_SLOPESPRITE);
}
else
{

View file

@ -218,6 +218,7 @@ void HWFlat::MakeVertices(HWDrawInfo* di)
//==========================================================================
void HWFlat::DrawFlat(HWDrawInfo *di, FRenderState &state, bool translucent)
{
rendered_flats++;
if (screen->BuffersArePersistent() && !Sprite)
{
MakeVertices(di);
@ -291,7 +292,6 @@ void HWFlat::PutFlat(HWDrawInfo *di, int whichplane)
MakeVertices(di);
}
di->AddFlat(this);
rendered_flats++;
}
//==========================================================================

View file

@ -253,6 +253,7 @@ void HWWall::RenderTranslucentWall(HWDrawInfo *di, FRenderState &state)
//==========================================================================
void HWWall::DrawWall(HWDrawInfo *di, FRenderState &state, bool translucent)
{
rendered_lines++;
if (screen->BuffersArePersistent())
{
/*
@ -397,7 +398,6 @@ void HWWall::SetupLights(HWDrawInfo *di, FDynLightData &lightdata)
//==========================================================================
void HWWall::PutWall(HWDrawInfo *di, bool translucent)
{
rendered_lines++;
if (translucent || (texture && texture->GetTranslucency() && type == RENDERWALL_M2S))
{
flags |= HWF_TRANSLUCENT;