Fixed EXT_stencil_two_side code to actually work :)
This commit is contained in:
parent
c88af5d0b5
commit
3401403fce
2 changed files with 7 additions and 5 deletions
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue