Fix oversight in software plane and sprite secbright handling

c54aaf1cdb
This commit is contained in:
NepDisk 2025-11-19 19:19:32 -05:00
parent 64ead818ca
commit 5f6c7e2127
2 changed files with 8 additions and 8 deletions

View file

@ -1038,7 +1038,7 @@ void R_DrawSinglePlane(drawspandata_t *ds, visplane_t *pl, boolean allow_paralle
spanfunctype = SPANDRAWFUNC_SPLAT;
if (pl->polyobj->translucency == 0 || (pl->extra_colormap && (pl->extra_colormap->flags & CMF_FOG)))
light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value);
light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT);
else
light = LIGHTLEVELS-1;
}
@ -1079,17 +1079,17 @@ void R_DrawSinglePlane(drawspandata_t *ds, visplane_t *pl, boolean allow_paralle
}
if ((spanfunctype == SPANDRAWFUNC_SPLAT) || (pl->extra_colormap && (pl->extra_colormap->flags & CMF_FOG)))
light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value);
light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT);
else
light = LIGHTLEVELS-1;
}
else if (pl->ffloor->fofflags & FOF_FOG)
{
spanfunctype = SPANDRAWFUNC_FOG;
light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value);
light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT);
}
else
light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value);
light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT);
debug = SW_HI_FOFPLANES;
}
@ -1149,7 +1149,7 @@ void R_DrawSinglePlane(drawspandata_t *ds, visplane_t *pl, boolean allow_paralle
}
}
else
light = std::max((pl->lightlevel >> LIGHTSEGSHIFT), cv_secbright.value);
light = (std::max(pl->lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT);
}
ds->currentplane = pl;

View file

@ -1320,7 +1320,7 @@ static void R_SplitSprite(vissprite_t *sprite)
newsprite->cut = static_cast<spritecut_e>(newsprite->cut | SC_TOP);
if (!(sector->lightlist[i].caster->fofflags & FOF_NOSHADE))
{
lightnum = std::max((*sector->lightlist[i].lightlevel >> LIGHTSEGSHIFT), cv_secbright.value);
lightnum = (std::max((INT32)*sector->lightlist[i].lightlevel, cv_secbright.value)) >> LIGHTSEGSHIFT;
if (lightnum < 0)
spritelights = scalelight[0];
@ -2354,7 +2354,7 @@ static void R_ProjectSprite(mobj_t *thing)
lightnum = thing->subsector->sector->lightlevel;
}
lightnum = std::max((lightnum + R_ThingLightLevel(thing)) >> LIGHTSEGSHIFT, cv_secbright.value);
lightnum = (std::max((lightnum + R_ThingLightLevel(thing)), cv_secbright.value) >> LIGHTSEGSHIFT);
if (maplighting.directional == true && P_SectorUsesDirectionalLighting(thing->subsector->sector))
{
@ -2780,7 +2780,7 @@ void R_AddSprites(sector_t *sec, INT32 lightlevel)
{
if (sec->heightsec == -1) lightlevel = sec->lightlevel;
lightnum = std::max((lightlevel >> LIGHTSEGSHIFT), cv_secbright.value);
lightnum = (std::max(lightlevel, cv_secbright.value) >> LIGHTSEGSHIFT);
if (lightnum < 0)
spritelights = scalelight[0];