Fixed EXT_stencil_two_side code to actually work :)

This commit is contained in:
jpaana 2004-06-19 21:29:14 +00:00
parent c88af5d0b5
commit 3401403fce
2 changed files with 7 additions and 5 deletions

View file

@ -669,6 +669,7 @@ void R_DrawAliasSurfaceShadowVolume (aliashdr_t *paliashdr, aliasframeinstant_t
case 1:
// EXT_stencil_two_side
glDisable(GL_CULL_FACE);
glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
qglActiveStencilFaceEXT(GL_BACK);
glStencilOp(GL_KEEP, GL_DECR_WRAP_EXT, GL_KEEP);
glStencilFunc(GL_ALWAYS, 0, ~0);
@ -677,12 +678,12 @@ void R_DrawAliasSurfaceShadowVolume (aliashdr_t *paliashdr, aliasframeinstant_t
glStencilFunc(GL_ALWAYS, 0, ~0);
R_DrawAliasFrameShadowVolume2 (paliashdr, aliasframeinstant);
glEnable(GL_CULL_FACE);
glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT);
break;
case 2:
// ATI_separate_stencil
glDisable(GL_CULL_FACE);
glStencilOp(GL_KEEP, GL_INCR_WRAP_EXT, GL_KEEP);
qglStencilFuncSeparateATI(GL_ALWAYS, GL_ALWAYS, 0, ~0);
qglStencilOpSeparateATI(GL_FRONT, GL_KEEP, GL_INCR_WRAP_EXT, GL_KEEP);
qglStencilOpSeparateATI(GL_BACK, GL_KEEP, GL_DECR_WRAP_EXT, GL_KEEP);
@ -2170,6 +2171,7 @@ void R_RenderScene (void)
case 1:
// EXT_stencil_two_side
glDisable(GL_CULL_FACE);
glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
qglActiveStencilFaceEXT(GL_BACK);
glStencilOp(GL_KEEP, GL_INCR_WRAP_EXT, GL_KEEP);
glStencilFunc(GL_ALWAYS, 0, ~0);
@ -2182,13 +2184,12 @@ void R_RenderScene (void)
//Pass 1 increase
if (sh_entityshadows.value) R_DrawEntitiesShadowVolumes(mod_brush);
glEnable(GL_CULL_FACE);
qglActiveStencilFaceEXT(GL_FRONT_AND_BACK);
glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT);
break;
case 2:
// ATI_separate_stencil
glDisable(GL_CULL_FACE);
glStencilOp(GL_KEEP, GL_INCR_WRAP_EXT, GL_KEEP);
qglStencilFuncSeparateATI(GL_ALWAYS, GL_ALWAYS, 0, ~0);
qglStencilOpSeparateATI(GL_FRONT, GL_KEEP, GL_DECR_WRAP_EXT, GL_KEEP);
qglStencilOpSeparateATI(GL_BACK, GL_KEEP, GL_INCR_WRAP_EXT, GL_KEEP);

View file

@ -1986,7 +1986,8 @@ void StencilMeshVolumes()
case 1:
// EXT_stencil_two_side
glDisable(GL_CULL_FACE);
qglActiveStencilFaceEXT(GL_BACK);
glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
qglActiveStencilFaceEXT(GL_BACK);
glStencilOp(GL_KEEP, GL_INCR_WRAP_EXT, GL_KEEP);
glStencilFunc(GL_ALWAYS, 0, ~0);
qglActiveStencilFaceEXT(GL_FRONT);
@ -1996,7 +1997,7 @@ void StencilMeshVolumes()
for (i=0; i<currentshadowlight->numlightcmdsmesh-1; i++)
StencilMeshVolume2((mesh_t *)currentshadowlight->lightCmdsMesh[i].asVoid);
glEnable(GL_CULL_FACE);
qglActiveStencilFaceEXT(GL_FRONT_AND_BACK);
glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT);
break;
case 2: