Skip to content

Commit 0721f54

Browse files
committed
[rend2] Make sky ignore prepass depth
Mappers use blended depthwritten occluders to mask map geometry and still want to see the sky behind them. Only use depthtest for skies when there was something written to the image before the skydraw like portals or skyportals.
1 parent 0a0fcfa commit 0721f54

File tree

4 files changed

+6
-0
lines changed

4 files changed

+6
-0
lines changed

shared/rd-rend2/tr_backend.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,6 +1549,9 @@ static void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs )
15491549
backEnd.refdef.floatTime = originalTime;
15501550
FBO_Bind(fbo);
15511551
GL_SetModelviewMatrix(backEnd.viewParms.world.modelViewMatrix);
1552+
1553+
if (backEnd.viewParms.viewParmType == VPT_PORTAL || backEnd.viewParms.viewParmType == VPT_SKYPORTAL)
1554+
tr.portalRenderedThisFrame = qtrue;
15521555
}
15531556

15541557

shared/rd-rend2/tr_local.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2686,6 +2686,7 @@ typedef struct trGlobals_s {
26862686
viewParms_t viewParms;
26872687
viewParms_t cachedViewParms[3 + MAX_DLIGHTS * 6 + 3 + MAX_DRAWN_PSHADOWS];
26882688
int numCachedViewParms;
2689+
qboolean portalRenderedThisFrame;
26892690

26902691
viewParms_t skyPortalParms;
26912692
byte skyPortalAreaMask[MAX_MAP_AREA_BYTES];

shared/rd-rend2/tr_scene.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,7 @@ void RE_BeginScene(const refdef_t *fd)
503503
// each scene / view.
504504
tr.frameSceneNum++;
505505
tr.sceneCount++;
506+
tr.portalRenderedThisFrame = qfalse;
506507

507508
//ri.Printf(PRINT_ALL, "RE_BeginScene Frame: %i, skyportal: %i, entities: %i\n", backEndData->realFrameNumber, int(tr.world->skyboxportal && (tr.refdef.rdflags & RDF_SKYBOXPORTAL)), tr.refdef.num_entities);
508509
R_GatherFrameViews(&tr.refdef);

shared/rd-rend2/tr_sky.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ static void DrawSkySide( struct image_s *image, const int mins[2], const int max
464464
};
465465

466466
DrawItem item = {};
467+
item.renderState.stateBits = tr.portalRenderedThisFrame ? 0 : GLS_DEPTHTEST_DISABLE;
467468
item.renderState.cullType = CT_TWO_SIDED;
468469
item.renderState.depthRange = RB_GetDepthRange(backEnd.currentEntity, tess.shader);
469470
item.program = sp;

0 commit comments

Comments
 (0)