mirror of
https://github.com/ZDoom/Raze.git
synced 2025-01-30 20:10:48 +00:00
TROR/classic: fix a certain class of underdraw glitches.
Those were happening when wall drawing in an upper/lower layer "closed" too much of the "curtain" (umost/dmost) for subsequent drawing in that portal. Example: looking down the sewer manhole at the beginning of Retaliation will now render without HOM. git-svn-id: https://svn.eduke32.com/eduke32@2739 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
9f40f84cbe
commit
2fa7ccf9dd
1 changed files with 32 additions and 0 deletions
|
@ -4728,6 +4728,21 @@ static void drawalls(int32_t bunch)
|
||||||
|
|
||||||
if ((cz[2] >= cz[0]) && (cz[3] >= cz[1]))
|
if ((cz[2] >= cz[0]) && (cz[3] >= cz[1]))
|
||||||
{
|
{
|
||||||
|
#ifdef YAX_ENABLE
|
||||||
|
int32_t doclip = (yax_globallev <= YAX_MAXDRAWS);
|
||||||
|
|
||||||
|
if (!doclip)
|
||||||
|
{
|
||||||
|
for (x=x1; x<=x2; x++)
|
||||||
|
if (dwall[x] < dmost[x] || uplc[x] < dmost[x])
|
||||||
|
{
|
||||||
|
doclip = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doclip)
|
||||||
|
#endif
|
||||||
for (x=x1; x<=x2; x++)
|
for (x=x1; x<=x2; x++)
|
||||||
if (dwall[x] > umost[x])
|
if (dwall[x] > umost[x])
|
||||||
if (umost[x] <= dmost[x])
|
if (umost[x] <= dmost[x])
|
||||||
|
@ -4738,6 +4753,7 @@ static void drawalls(int32_t bunch)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// TROR: TODO: same doclip tweak as above?
|
||||||
for (x=x1; x<=x2; x++)
|
for (x=x1; x<=x2; x++)
|
||||||
if (umost[x] <= dmost[x])
|
if (umost[x] <= dmost[x])
|
||||||
{
|
{
|
||||||
|
@ -4810,6 +4826,21 @@ static void drawalls(int32_t bunch)
|
||||||
|
|
||||||
if ((fz[2] <= fz[0]) && (fz[3] <= fz[1]))
|
if ((fz[2] <= fz[0]) && (fz[3] <= fz[1]))
|
||||||
{
|
{
|
||||||
|
#ifdef YAX_ENABLE
|
||||||
|
int32_t doclip = (yax_globallev >= YAX_MAXDRAWS);
|
||||||
|
|
||||||
|
if (!doclip)
|
||||||
|
{
|
||||||
|
for (x=x1; x<=x2; x++)
|
||||||
|
if (uwall[x] > umost[x] || dplc[x] > umost[x])
|
||||||
|
{
|
||||||
|
doclip = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doclip)
|
||||||
|
#endif
|
||||||
for (x=x1; x<=x2; x++)
|
for (x=x1; x<=x2; x++)
|
||||||
if (uwall[x] < dmost[x])
|
if (uwall[x] < dmost[x])
|
||||||
if (umost[x] <= dmost[x])
|
if (umost[x] <= dmost[x])
|
||||||
|
@ -4820,6 +4851,7 @@ static void drawalls(int32_t bunch)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// TROR: TODO: same doclip tweak as above?
|
||||||
for (x=x1; x<=x2; x++)
|
for (x=x1; x<=x2; x++)
|
||||||
if (umost[x] <= dmost[x])
|
if (umost[x] <= dmost[x])
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue