mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-12 11:10:39 +00:00
Fix blinkiness.
git-svn-id: https://svn.eduke32.com/eduke32@1270 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
88c7967d02
commit
f285ad903c
1 changed files with 34 additions and 13 deletions
|
@ -1099,22 +1099,39 @@ static void polymer_displayrooms(int16_t dacursectnum)
|
|||
|
||||
if (doquery && (!drawingstate[wall[sec->wallptr + i].nextsector]))
|
||||
{
|
||||
bglColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||
bglDepthMask(GL_FALSE);
|
||||
float pos[3], sqdist;
|
||||
|
||||
bglGenQueriesARB(1, &queryid[sec->wallptr + i]);
|
||||
bglBeginQueryARB(GL_SAMPLES_PASSED_ARB, queryid[sec->wallptr + i]);
|
||||
pos[0] = globalposy;
|
||||
pos[1] = -(float)(globalposz) / 16.0f;
|
||||
pos[2] = -globalposx;
|
||||
|
||||
overridematerial = 0;
|
||||
sqdist = prwalls[sec->wallptr + i]->mask.plane[0] * pos[0] +
|
||||
prwalls[sec->wallptr + i]->mask.plane[1] * pos[1] +
|
||||
prwalls[sec->wallptr + i]->mask.plane[2] * pos[2] +
|
||||
prwalls[sec->wallptr + i]->mask.plane[3];
|
||||
|
||||
polymer_drawplane(&prwalls[sec->wallptr + i]->mask);
|
||||
// hack to avoid occlusion querying portals that are too close to the viewpoint
|
||||
// this is needed because of the near z-clipping plane;
|
||||
if (sqdist < 100)
|
||||
queryid[sec->wallptr + i] = -1;
|
||||
else {
|
||||
bglColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||
bglDepthMask(GL_FALSE);
|
||||
|
||||
overridematerial = 0xFFFFFFFF;
|
||||
bglGenQueriesARB(1, &queryid[sec->wallptr + i]);
|
||||
bglBeginQueryARB(GL_SAMPLES_PASSED_ARB, queryid[sec->wallptr + i]);
|
||||
|
||||
bglEndQueryARB(GL_SAMPLES_PASSED_ARB);
|
||||
overridematerial = 0;
|
||||
|
||||
bglDepthMask(GL_TRUE);
|
||||
bglColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
polymer_drawplane(&prwalls[sec->wallptr + i]->mask);
|
||||
|
||||
overridematerial = 0xFFFFFFFF;
|
||||
|
||||
bglEndQueryARB(GL_SAMPLES_PASSED_ARB);
|
||||
|
||||
bglDepthMask(GL_TRUE);
|
||||
bglColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||
}
|
||||
} else
|
||||
queryid[sec->wallptr + i] = 1;
|
||||
}
|
||||
|
@ -1130,13 +1147,15 @@ static void polymer_displayrooms(int16_t dacursectnum)
|
|||
{
|
||||
// REAP
|
||||
result = 0;
|
||||
if (doquery)
|
||||
if (doquery && (queryid[sec->wallptr + i] != -1))
|
||||
{
|
||||
bglGetQueryObjectivARB(queryid[sec->wallptr + i],
|
||||
GL_QUERY_RESULT_ARB,
|
||||
&result);
|
||||
bglDeleteQueriesARB(1, &queryid[sec->wallptr + i]);
|
||||
}
|
||||
} else if (queryid[sec->wallptr + i] == -1)
|
||||
result = 1;
|
||||
|
||||
queryid[sec->wallptr + i] = 0;
|
||||
|
||||
if (result || !doquery)
|
||||
|
@ -3591,7 +3610,7 @@ static void polymer_culllight(char lightindex)
|
|||
static void polymer_prepareshadows(void)
|
||||
{
|
||||
int32_t i, j;
|
||||
int32_t gx, gy;
|
||||
int32_t gx, gy, gz;
|
||||
|
||||
i = j = 0;
|
||||
|
||||
|
@ -3619,11 +3638,13 @@ static void polymer_prepareshadows(void)
|
|||
// for wallvisible()
|
||||
gx = globalposx;
|
||||
gy = globalposy;
|
||||
gz = globalposz;
|
||||
|
||||
polymer_displayrooms(prlights[i].sector);
|
||||
|
||||
globalposx = gx;
|
||||
globalposy = gy;
|
||||
globalposz = gz;
|
||||
|
||||
bglDisable(GL_POLYGON_OFFSET_FILL);
|
||||
|
||||
|
|
Loading…
Reference in a new issue