From dedd5527dadd2827a2468ab70ff732eddd7c8bd3 Mon Sep 17 00:00:00 2001 From: Jaime Passos Date: Wed, 11 Dec 2019 11:35:34 -0300 Subject: [PATCH] Restore portal culling code that went gone by pure accident --- src/r_bsp.c | 8 ++++++++ src/r_main.c | 2 ++ src/r_portal.c | 1 + src/r_portal.h | 1 + 4 files changed, 12 insertions(+) diff --git a/src/r_bsp.c b/src/r_bsp.c index 2fcaf9e43..51d9bd3fd 100644 --- a/src/r_bsp.c +++ b/src/r_bsp.c @@ -1378,5 +1378,13 @@ void R_RenderBSPNode(INT32 bspnum) bspnum = bsp->children[side^1]; } + // PORTAL CULLING + if (portalcullsector) { + sector_t *sect = subsectors[bspnum & ~NF_SUBSECTOR].sector; + if (sect != portalcullsector) + return; + portalcullsector = NULL; + } + R_Subsector(bspnum == -1 ? 0 : bspnum & ~NF_SUBSECTOR); } diff --git a/src/r_main.c b/src/r_main.c index dd1243868..c21d339aa 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -1008,11 +1008,13 @@ static void R_PortalFrame(portal_t *portal) if (portal->clipline != -1) { portalclipline = &lines[portal->clipline]; + portalcullsector = portalclipline->frontsector; viewsector = portalclipline->frontsector; } else { portalclipline = NULL; + portalcullsector = NULL; viewsector = R_PointInSubsector(viewx, viewy)->sector; } } diff --git a/src/r_portal.c b/src/r_portal.c index 8995eaac4..576b606ec 100644 --- a/src/r_portal.c +++ b/src/r_portal.c @@ -26,6 +26,7 @@ UINT8 portalrender; /**< When rendering a portal, it establishes the depth of portal_t *portal_base, *portal_cap; line_t *portalclipline; +sector_t *portalcullsector; INT32 portalclipstart, portalclipend; boolean portalline; // is curline a portal seg? diff --git a/src/r_portal.h b/src/r_portal.h index 5990d1959..c46ddfdab 100644 --- a/src/r_portal.h +++ b/src/r_portal.h @@ -45,6 +45,7 @@ extern portal_t* portal_cap; extern UINT8 portalrender; extern line_t *portalclipline; +extern sector_t *portalcullsector; extern INT32 portalclipstart, portalclipend; void Portal_InitList (void);