mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-27 20:20:40 +00:00
- reinstate the old code for rendering the first portal without stencil
The previous commit fixes the true issue causing the problems - with this back the restriction is not needed anymore.
This commit is contained in:
parent
db1cf63e7a
commit
79823b430c
1 changed files with 35 additions and 6 deletions
|
@ -118,13 +118,42 @@ bool FPortalSceneState::RenderFirstSkyPortal(int recursion, HWDrawInfo *outer_di
|
||||||
HWPortal* best = nullptr;
|
HWPortal* best = nullptr;
|
||||||
unsigned bestindex = 0;
|
unsigned bestindex = 0;
|
||||||
|
|
||||||
if (recursion > 0 || outer_di->Portals.Size() != 1 || !outer_di->Portals[0]->IsSky()) return false;
|
// Find the one with the highest amount of lines.
|
||||||
|
// Normally this is also the one that saves the largest amount
|
||||||
|
// of time by drawing it before the scene itself.
|
||||||
|
auto& portals = outer_di->Portals;
|
||||||
|
for (int i = portals.Size() - 1; i >= 0; --i)
|
||||||
|
{
|
||||||
|
auto p = portals[i];
|
||||||
|
if (p->lines.Size() > 0 && p->IsSky())
|
||||||
|
{
|
||||||
|
// Cannot clear the depth buffer inside a portal recursion
|
||||||
|
if (recursion && p->NeedDepthBuffer()) continue;
|
||||||
|
|
||||||
best = outer_di->Portals[0];
|
if (!best || p->lines.Size() > best->lines.Size())
|
||||||
outer_di->Portals.Clear();
|
{
|
||||||
|
best = p;
|
||||||
|
bestindex = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the portal area contains the current camera viewpoint, let's always use it because it's likely to give the largest area.
|
||||||
|
if (p->boundingBox.contains(outer_di->Viewpoint.Pos))
|
||||||
|
{
|
||||||
|
best = p;
|
||||||
|
bestindex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (best)
|
||||||
|
{
|
||||||
|
portals.Delete(bestindex);
|
||||||
RenderPortal(best, state, false, outer_di);
|
RenderPortal(best, state, false, outer_di);
|
||||||
delete best;
|
delete best;
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue