Work around the z-fighting on some baseq2 maps (new cvar gl_zfix)

This commit is contained in:
svdijk 2013-03-16 16:47:57 +01:00
parent d9519cee61
commit 7637d32f6f
3 changed files with 25 additions and 0 deletions

View file

@ -234,6 +234,7 @@ extern cvar_t *gl_skymip;
extern cvar_t *gl_showtris;
extern cvar_t *gl_finish;
extern cvar_t *gl_ztrick;
extern cvar_t *gl_zfix;
extern cvar_t *gl_clear;
extern cvar_t *gl_cull;
extern cvar_t *gl_poly;

View file

@ -146,6 +146,7 @@ cvar_t *gl_picmip;
cvar_t *gl_skymip;
cvar_t *gl_showtris;
cvar_t *gl_ztrick;
cvar_t *gl_zfix;
cvar_t *gl_finish;
cvar_t *gl_clear;
cvar_t *gl_cull;
@ -788,12 +789,20 @@ R_Clear(void)
gldepthmin = 0;
gldepthmax = 0.49999;
qglDepthFunc(GL_LEQUAL);
if (gl_zfix->value)
{
qglPolygonOffset(0, 14);
}
}
else
{
gldepthmin = 1;
gldepthmax = 0.5;
qglDepthFunc(GL_GEQUAL);
if (gl_zfix->value)
{
qglPolygonOffset(0, -14);
}
}
}
else
@ -810,6 +819,10 @@ R_Clear(void)
gldepthmin = 0;
gldepthmax = 1;
qglDepthFunc(GL_LEQUAL);
if (gl_zfix->value)
{
qglPolygonOffset(0, 14);
}
}
qglDepthRange(gldepthmin, gldepthmax);
@ -992,6 +1005,7 @@ R_Register(void)
gl_skymip = ri.Cvar_Get("gl_skymip", "0", 0);
gl_showtris = ri.Cvar_Get("gl_showtris", "0", 0);
gl_ztrick = ri.Cvar_Get("gl_ztrick", "0", 0);
gl_zfix = ri.Cvar_Get("gl_zfix", "1", 0);
gl_finish = ri.Cvar_Get("gl_finish", "0", CVAR_ARCHIVE);
gl_clear = ri.Cvar_Get("gl_clear", "0", 0);
gl_cull = ri.Cvar_Get("gl_cull", "1", 0);

View file

@ -911,6 +911,11 @@ R_DrawBrushModel(entity_t *e)
return;
}
if (gl_zfix->value)
{
qglEnable(GL_POLYGON_OFFSET_FILL);
}
qglColor3f(1, 1, 1);
memset(gl_lms.lightmap_surfaces, 0, sizeof(gl_lms.lightmap_surfaces));
@ -992,6 +997,11 @@ R_DrawBrushModel(entity_t *e)
R_EnableMultitexture(false);
qglPopMatrix();
if (gl_zfix->value)
{
qglDisable(GL_POLYGON_OFFSET_FILL);
}
}
void