mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-11 15:22:15 +00:00
Additional fix for splitting of complex wall in compatibility renderer
warp 2720 -200 -32 on Extreme Terror https://www.doomworld.com/idgames/levels/doom2/Ports/d-f/exterror
This commit is contained in:
parent
def3ad7533
commit
9ab9548723
2 changed files with 13 additions and 11 deletions
|
@ -187,7 +187,7 @@ private:
|
|||
void RenderLightsCompat(int pass);
|
||||
|
||||
void Put3DWall(lightlist_t * lightlist, bool translucent);
|
||||
void SplitWallComplex(sector_t * frontsector, bool translucent, float maplightbottomleft, float maplightbottomright);
|
||||
bool SplitWallComplex(sector_t * frontsector, bool translucent, float& maplightbottomleft, float& maplightbottomright);
|
||||
void SplitWall(sector_t * frontsector, bool translucent);
|
||||
|
||||
void SetupLights();
|
||||
|
|
|
@ -264,7 +264,7 @@ void GLWall::Put3DWall(lightlist_t * lightlist, bool translucent)
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
void GLWall::SplitWallComplex(sector_t * frontsector, bool translucent, float maplightbottomleft, float maplightbottomright)
|
||||
bool GLWall::SplitWallComplex(sector_t * frontsector, bool translucent, float& maplightbottomleft, float& maplightbottomright)
|
||||
{
|
||||
GLWall copyWall1, copyWall2;
|
||||
|
||||
|
@ -304,7 +304,7 @@ void GLWall::SplitWallComplex(sector_t * frontsector, bool translucent, float ma
|
|||
|
||||
copyWall1.SplitWall(frontsector, translucent);
|
||||
copyWall2.SplitWall(frontsector, translucent);
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -345,9 +345,11 @@ void GLWall::SplitWallComplex(sector_t * frontsector, bool translucent, float ma
|
|||
|
||||
copyWall1.SplitWall(frontsector, translucent);
|
||||
copyWall2.SplitWall(frontsector, translucent);
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void GLWall::SplitWall(sector_t * frontsector, bool translucent)
|
||||
|
@ -406,15 +408,15 @@ void GLWall::SplitWall(sector_t * frontsector, bool translucent)
|
|||
// Use hardware clipping if this cannot be done cleanly.
|
||||
this->lightlist = &lightlist;
|
||||
PutWall(translucent);
|
||||
}
|
||||
else
|
||||
{
|
||||
// crappy fallback if no clip planes available
|
||||
SplitWallComplex(frontsector, translucent, maplightbottomleft, maplightbottomright);
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
// crappy fallback if no clip planes available
|
||||
else if (SplitWallComplex(frontsector, translucent, maplightbottomleft, maplightbottomright))
|
||||
{
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
// 3D floor is completely within this light
|
||||
if (maplightbottomleft<=zbottom[0] && maplightbottomright<=zbottom[1])
|
||||
|
|
Loading…
Reference in a new issue