mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-24 04:51:41 +00:00
- only draw visible 3D-lights.
This commit is contained in:
parent
bddad29acb
commit
1ad310e69b
1 changed files with 17 additions and 8 deletions
|
@ -344,14 +344,23 @@ void GLWall::RenderTextured(int rflags)
|
||||||
|
|
||||||
for (unsigned i = 0; i < lightlist->Size(); i++)
|
for (unsigned i = 0; i < lightlist->Size(); i++)
|
||||||
{
|
{
|
||||||
int thisll = (*lightlist)[i].caster != NULL? gl_ClampLight(*(*lightlist)[i].p_lightlevel) : lightlevel;
|
secplane_t &lowplane = i == (*lightlist).Size() - 1 ? bottomplane : (*lightlist)[i + 1].plane;
|
||||||
FColormap thiscm;
|
// this must use the exact same calculation method as GLWall::Process etc.
|
||||||
thiscm.FadeColor = Colormap.FadeColor;
|
float low1 = FIXED2FLOAT(lowplane.ZatPoint(vertexes[0]));
|
||||||
thiscm.CopyFrom3DLight(&(*lightlist)[i]);
|
float low2 = FIXED2FLOAT(lowplane.ZatPoint(vertexes[1]));
|
||||||
gl_SetColor(thisll, rel, thiscm, absalpha);
|
|
||||||
if (type != RENDERWALL_M2SNF) gl_SetFog(thisll, rel, &thiscm, RenderStyle == STYLE_Add);
|
if (low1 < ztop[0] && low2 < ztop[1])
|
||||||
gl_RenderState.SetSplitPlanes((*lightlist)[i].plane, i == (*lightlist).Size() - 1 ? bottomplane : (*lightlist)[i + 1].plane);
|
{
|
||||||
RenderWall(rflags);
|
int thisll = (*lightlist)[i].caster != NULL ? gl_ClampLight(*(*lightlist)[i].p_lightlevel) : lightlevel;
|
||||||
|
FColormap thiscm;
|
||||||
|
thiscm.FadeColor = Colormap.FadeColor;
|
||||||
|
thiscm.CopyFrom3DLight(&(*lightlist)[i]);
|
||||||
|
gl_SetColor(thisll, rel, thiscm, absalpha);
|
||||||
|
if (type != RENDERWALL_M2SNF) gl_SetFog(thisll, rel, &thiscm, RenderStyle == STYLE_Add);
|
||||||
|
gl_RenderState.SetSplitPlanes((*lightlist)[i].plane, lowplane);
|
||||||
|
RenderWall(rflags);
|
||||||
|
}
|
||||||
|
if (low1 <= zbottom[0] && low2 <= zbottom[1]) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
glDisable(GL_CLIP_DISTANCE3);
|
glDisable(GL_CLIP_DISTANCE3);
|
||||||
|
|
Loading…
Reference in a new issue