mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-02-02 05:41:49 +00:00
Revert software renderer parts of "- sprite lightlevel cleanup and fixes."
This code had some issues which are not easily fixed, so it's better to just undo it all.
This commit is contained in:
parent
435e7dddcd
commit
500e2d6c5a
2 changed files with 17 additions and 15 deletions
|
@ -605,7 +605,8 @@ namespace swrenderer
|
||||||
}
|
}
|
||||||
|
|
||||||
Add3DFloorPlanes(sub, frontsector, basecolormap, foggy, adjusted_ceilinglightlevel, adjusted_floorlightlevel);
|
Add3DFloorPlanes(sub, frontsector, basecolormap, foggy, adjusted_ceilinglightlevel, adjusted_floorlightlevel);
|
||||||
AddSprites(sub->sector, frontsector, FakeSide, foggy);
|
auto nc = !!(frontsector->Level->flags3 & LEVEL3_NOCOLOREDSPRITELIGHTING);
|
||||||
|
AddSprites(sub->sector, frontsector->GetTexture(sector_t::ceiling) == skyflatnum ? ceilinglightlevel : floorlightlevel, FakeSide, foggy, GetSpriteColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::sprites], nc));
|
||||||
|
|
||||||
// [RH] Add particles
|
// [RH] Add particles
|
||||||
if ((unsigned int)(sub->Index()) < Level->subsectors.Size())
|
if ((unsigned int)(sub->Index()) < Level->subsectors.Size())
|
||||||
|
@ -873,7 +874,7 @@ namespace swrenderer
|
||||||
fillshort(ceilingclip, viewwidth, 0);
|
fillshort(ceilingclip, viewwidth, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderOpaquePass::AddSprites(sector_t *sec, sector_t* frontsector, WaterFakeSide fakeside, bool foggy)
|
void RenderOpaquePass::AddSprites(sector_t *sec, int lightlevel, WaterFakeSide fakeside, bool foggy, FDynamicColormap *basecolormap)
|
||||||
{
|
{
|
||||||
// BSP is traversed by subsector.
|
// BSP is traversed by subsector.
|
||||||
// A sector might have been split into several
|
// A sector might have been split into several
|
||||||
|
@ -933,22 +934,23 @@ namespace swrenderer
|
||||||
bool isPicnumOverride = thing->picnum.isValid();
|
bool isPicnumOverride = thing->picnum.isValid();
|
||||||
if (GetThingSprite(thing, sprite))
|
if (GetThingSprite(thing, sprite))
|
||||||
{
|
{
|
||||||
int thinglightlevel;
|
FDynamicColormap *thingColormap = basecolormap;
|
||||||
|
int thinglightlevel = lightlevel;
|
||||||
if (sec->sectornum != thing->Sector->sectornum) // compare sectornums to account for R_FakeFlat copies.
|
if (sec->sectornum != thing->Sector->sectornum) // compare sectornums to account for R_FakeFlat copies.
|
||||||
{
|
{
|
||||||
frontsector = thing->Sector;
|
thinglightlevel = thing->Sector->GetTexture(sector_t::ceiling) == skyflatnum ? thing->Sector->GetCeilingLight() : thing->Sector->GetFloorLight();
|
||||||
|
auto nc = !!(thing->Level->flags3 & LEVEL3_NOCOLOREDSPRITELIGHTING);
|
||||||
|
thingColormap = GetSpriteColorTable(thing->Sector->Colormap, thing->Sector->SpecialColors[sector_t::sprites], nc);
|
||||||
}
|
}
|
||||||
auto nc = !!(thing->Level->flags3 & LEVEL3_NOCOLOREDSPRITELIGHTING);
|
if (thing->LightLevel > -1)
|
||||||
FDynamicColormap* thingColormap = GetSpriteColorTable(frontsector->Colormap, frontsector->SpecialColors[sector_t::sprites], nc);
|
{
|
||||||
|
thinglightlevel = thing->LightLevel;
|
||||||
|
|
||||||
// per-sprite lightlevel and fog do not mix well in the software renderer.
|
if (thing->flags8 & MF8_ADDLIGHTLEVEL)
|
||||||
if (!foggy)
|
{
|
||||||
{
|
thinglightlevel += thing->Sector->GetTexture(sector_t::ceiling) == skyflatnum ? thing->Sector->GetCeilingLight() : thing->Sector->GetFloorLight();
|
||||||
thinglightlevel = clamp(thing->GetLightLevel(frontsector), 0, 255);
|
thinglightlevel = clamp(thinglightlevel, 0, 255);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
thinglightlevel = clamp<int>(frontsector->lightlevel, 0, 255);
|
|
||||||
}
|
}
|
||||||
if ((sprite.renderflags & RF_SPRITETYPEMASK) == RF_WALLSPRITE)
|
if ((sprite.renderflags & RF_SPRITETYPEMASK) == RF_WALLSPRITE)
|
||||||
{
|
{
|
||||||
|
|
|
@ -89,7 +89,7 @@ namespace swrenderer
|
||||||
void FakeDrawLoop(subsector_t *sub, sector_t *frontsector, VisiblePlane *floorplane, VisiblePlane *ceilingplane, Fake3DOpaque opaque3dfloor);
|
void FakeDrawLoop(subsector_t *sub, sector_t *frontsector, VisiblePlane *floorplane, VisiblePlane *ceilingplane, Fake3DOpaque opaque3dfloor);
|
||||||
void Add3DFloorLine(seg_t *line, sector_t *frontsector);
|
void Add3DFloorLine(seg_t *line, sector_t *frontsector);
|
||||||
|
|
||||||
void AddSprites(sector_t *sec, sector_t* frontsector, WaterFakeSide fakeside, bool foggy);
|
void AddSprites(sector_t *sec, int lightlevel, WaterFakeSide fakeside, bool foggy, FDynamicColormap *basecolormap);
|
||||||
bool IsPotentiallyVisible(AActor *thing);
|
bool IsPotentiallyVisible(AActor *thing);
|
||||||
bool GetThingSprite(AActor *thing, ThingSprite &sprite);
|
bool GetThingSprite(AActor *thing, ThingSprite &sprite);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue