mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-14 08:31:23 +00:00
- fixed stencil marking for SSAO.
This commit is contained in:
parent
0b460ccb03
commit
aafa445aac
3 changed files with 6 additions and 4 deletions
|
@ -440,7 +440,8 @@ void FGLRenderState::SetStencil(int offs, int op, int flags)
|
||||||
glStencilOp(GL_KEEP, GL_KEEP, op2gl[op]); // this stage doesn't modify the stencil
|
glStencilOp(GL_KEEP, GL_KEEP, op2gl[op]); // this stage doesn't modify the stencil
|
||||||
|
|
||||||
bool cmon = !(flags & SF_ColorMaskOff);
|
bool cmon = !(flags & SF_ColorMaskOff);
|
||||||
glColorMask(cmon, cmon, cmon, cmon); // don't write to the graphics buffer
|
bool cmalpha = cmon || (flags & SF_ColorMaskAlpha);
|
||||||
|
glColorMask(cmon, cmon, cmon, cmalpha); // don't write to the graphics buffer
|
||||||
glDepthMask(!(flags & SF_DepthMaskOff));
|
glDepthMask(!(flags & SF_DepthMaskOff));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -301,7 +301,7 @@ void HWPortal::RemoveStencil(HWDrawInfo *di, FRenderState &state, bool usestenci
|
||||||
state.EnableTexture(false);
|
state.EnableTexture(false);
|
||||||
state.SetRenderStyle(STYLE_Source);
|
state.SetRenderStyle(STYLE_Source);
|
||||||
|
|
||||||
state.SetStencil(0, SOP_Keep, SF_ColorMaskOff);
|
state.SetStencil(0, SOP_Keep, SF_ColorMaskOff | SF_ColorMaskAlpha); // SSAO needs the alpha channel as a marker.
|
||||||
if (needdepth) state.Clear(CT_Depth);
|
if (needdepth) state.Clear(CT_Depth);
|
||||||
state.SetDepthRange(0, 1);
|
state.SetDepthRange(0, 1);
|
||||||
state.SetDepthFunc(DF_LEqual);
|
state.SetDepthFunc(DF_LEqual);
|
||||||
|
@ -946,8 +946,8 @@ void HWEEHorizonPortal::DrawContents(HWDrawInfo *di, FRenderState &state)
|
||||||
{
|
{
|
||||||
GLSkyInfo skyinfo;
|
GLSkyInfo skyinfo;
|
||||||
skyinfo.init(sector->sky, 0);
|
skyinfo.init(sector->sky, 0);
|
||||||
//GLSkyPortal sky(mState, &skyinfo, true);
|
HWSkyPortal sky(screen->mSkyData, mState, &skyinfo, true);
|
||||||
//sky.DrawContents(di, state);
|
sky.DrawContents(di, state);
|
||||||
}
|
}
|
||||||
if (sector->GetTexture(sector_t::ceiling) != skyflatnum)
|
if (sector->GetTexture(sector_t::ceiling) != skyflatnum)
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,6 +57,7 @@ enum EStencilFlags
|
||||||
SF_AllOn = 0,
|
SF_AllOn = 0,
|
||||||
SF_ColorMaskOff = 1,
|
SF_ColorMaskOff = 1,
|
||||||
SF_DepthMaskOff = 2,
|
SF_DepthMaskOff = 2,
|
||||||
|
SF_ColorMaskAlpha = 4, // hack value for SSAO
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EStencilOp
|
enum EStencilOp
|
||||||
|
|
Loading…
Reference in a new issue