mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-12-02 00:42:08 +00:00
- fixed: for untextured walls, the texture must be disabled before rendering.
- fixed: untextured walls should never be passed to SplitWall. - fixed: untextured walls should not be affected by dynamic lights (it's either fog boundaries or outsides of 3D fog volumes.)
This commit is contained in:
parent
9ce6a7932c
commit
53a389aafc
2 changed files with 11 additions and 8 deletions
|
@ -248,6 +248,8 @@ void GLWall::SplitWall(sector_t * frontsector, bool translucent)
|
||||||
lights[i].colormap.CopyFrom3DLight(&lightlist[i]);
|
lights[i].colormap.CopyFrom3DLight(&lightlist[i]);
|
||||||
}
|
}
|
||||||
PutWall(translucent);
|
PutWall(translucent);
|
||||||
|
lights = NULL;
|
||||||
|
lightsize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -543,7 +545,7 @@ void GLWall::DoTexture(int _type,seg_t * seg, int peg,
|
||||||
// Add this wall to the render list
|
// Add this wall to the render list
|
||||||
sector_t * sec = sub? sub->sector : seg->frontsector;
|
sector_t * sec = sub? sub->sector : seg->frontsector;
|
||||||
|
|
||||||
if (sec->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap) PutWall(false);
|
if (sec->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap || !gltexture) PutWall(false);
|
||||||
else SplitWall(sec, false);
|
else SplitWall(sec, false);
|
||||||
|
|
||||||
glseg=glsave;
|
glseg=glsave;
|
||||||
|
@ -832,7 +834,7 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary,
|
||||||
// Draw the stuff
|
// Draw the stuff
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
if (realfront->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap) split.PutWall(translucent);
|
if (realfront->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap || !gltexture) split.PutWall(translucent);
|
||||||
else split.SplitWall(realfront, translucent);
|
else split.SplitWall(realfront, translucent);
|
||||||
|
|
||||||
t=1;
|
t=1;
|
||||||
|
@ -846,7 +848,7 @@ void GLWall::DoMidTexture(seg_t * seg, bool drawfogboundary,
|
||||||
// Draw the stuff without splitting
|
// Draw the stuff without splitting
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
if (realfront->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap) PutWall(translucent);
|
if (realfront->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap || !gltexture) PutWall(translucent);
|
||||||
else SplitWall(realfront, translucent);
|
else SplitWall(realfront, translucent);
|
||||||
}
|
}
|
||||||
alpha=1.0f;
|
alpha=1.0f;
|
||||||
|
@ -958,7 +960,7 @@ void GLWall::BuildFFBlock(seg_t * seg, F3DFloor * rover,
|
||||||
|
|
||||||
sector_t * sec = sub? sub->sector : seg->frontsector;
|
sector_t * sec = sub? sub->sector : seg->frontsector;
|
||||||
|
|
||||||
if (sec->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap) PutWall(translucent);
|
if (sec->e->XFloor.lightlist.Size()==0 || gl_fixedcolormap || !gltexture) PutWall(translucent);
|
||||||
else SplitWall(sec, translucent);
|
else SplitWall(sec, translucent);
|
||||||
|
|
||||||
alpha=1.0f;
|
alpha=1.0f;
|
||||||
|
|
|
@ -364,12 +364,12 @@ void GLWall::RenderTextured(int rflags)
|
||||||
|
|
||||||
void GLWall::RenderTranslucentWall()
|
void GLWall::RenderTranslucentWall()
|
||||||
{
|
{
|
||||||
if (gl_fixedcolormap == CM_DEFAULT && gl_lights && (gl.flags & RFL_BUFFER_STORAGE))
|
|
||||||
{
|
|
||||||
SetupLights();
|
|
||||||
}
|
|
||||||
if (gltexture)
|
if (gltexture)
|
||||||
{
|
{
|
||||||
|
if (gl_fixedcolormap == CM_DEFAULT && gl_lights && (gl.flags & RFL_BUFFER_STORAGE))
|
||||||
|
{
|
||||||
|
SetupLights();
|
||||||
|
}
|
||||||
if (!gltexture->GetTransparent()) gl_RenderState.AlphaFunc(GL_GEQUAL, gl_mask_threshold);
|
if (!gltexture->GetTransparent()) gl_RenderState.AlphaFunc(GL_GEQUAL, gl_mask_threshold);
|
||||||
else gl_RenderState.AlphaFunc(GL_GEQUAL, 0.f);
|
else gl_RenderState.AlphaFunc(GL_GEQUAL, 0.f);
|
||||||
if (RenderStyle == STYLE_Add) gl_RenderState.BlendFunc(GL_SRC_ALPHA,GL_ONE);
|
if (RenderStyle == STYLE_Add) gl_RenderState.BlendFunc(GL_SRC_ALPHA,GL_ONE);
|
||||||
|
@ -381,6 +381,7 @@ void GLWall::RenderTranslucentWall()
|
||||||
gl_RenderState.AlphaFunc(GL_GEQUAL, 0.f);
|
gl_RenderState.AlphaFunc(GL_GEQUAL, 0.f);
|
||||||
gl_SetColor(lightlevel, 0, Colormap, fabsf(alpha));
|
gl_SetColor(lightlevel, 0, Colormap, fabsf(alpha));
|
||||||
gl_SetFog(lightlevel, 0, &Colormap, RenderStyle == STYLE_Add);
|
gl_SetFog(lightlevel, 0, &Colormap, RenderStyle == STYLE_Add);
|
||||||
|
gl_RenderState.EnableTexture(false);
|
||||||
RenderWall(RWF_NOSPLIT);
|
RenderWall(RWF_NOSPLIT);
|
||||||
gl_RenderState.EnableTexture(true);
|
gl_RenderState.EnableTexture(true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue