From 0afc09678f02803f457b64f2831141f1cc1859c7 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sat, 16 Dec 2017 17:37:03 +0200 Subject: [PATCH] Fixed bright sprites in sectors with Doom 64 lighting https://forum.zdoom.org/viewtopic.php?t=58703 --- src/gl/scene/gl_sprite.cpp | 7 +++---- src/gl/scene/gl_weapon.cpp | 12 ++++++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp index 154720022..a773373ef 100644 --- a/src/gl/scene/gl_sprite.cpp +++ b/src/gl/scene/gl_sprite.cpp @@ -342,10 +342,9 @@ void GLSprite::Draw(int pass) sector_t *cursec = actor ? actor->Sector : particle ? particle->subsector->sector : nullptr; if (cursec != nullptr) { - PalEntry finalcol(ThingColor.a, - ThingColor.r * cursec->SpecialColors[sector_t::sprites].r / 255, - ThingColor.g * cursec->SpecialColors[sector_t::sprites].g / 255, - ThingColor.b * cursec->SpecialColors[sector_t::sprites].b / 255); + const PalEntry finalcol = fullbright + ? ThingColor + : ThingColor.Modulate(cursec->SpecialColors[sector_t::sprites]); gl_RenderState.SetObjectColor(finalcol); } diff --git a/src/gl/scene/gl_weapon.cpp b/src/gl/scene/gl_weapon.cpp index 3d4224520..69551f28a 100644 --- a/src/gl/scene/gl_weapon.cpp +++ b/src/gl/scene/gl_weapon.cpp @@ -385,18 +385,18 @@ void GLSceneDrawer::DrawPlayerSprites(sector_t * viewsector, bool hudModelStep) // now draw the different layers of the weapon. // For stencil render styles brightmaps need to be disabled. gl_RenderState.EnableBrightmap(!(RenderStyle.Flags & STYLEF_ColorIsFixed)); - PalEntry finalcol(ThingColor.a, - ThingColor.r * viewsector->SpecialColors[sector_t::sprites].r / 255, - ThingColor.g * viewsector->SpecialColors[sector_t::sprites].g / 255, - ThingColor.b * viewsector->SpecialColors[sector_t::sprites].b / 255); + const bool bright = isBright(psp); + const PalEntry finalcol = bright + ? ThingColor + : ThingColor.Modulate(viewsector->SpecialColors[sector_t::sprites]); gl_RenderState.SetObjectColor(finalcol); if (psp->GetState() != nullptr) { FColormap cmc = cm; int ll = lightlevel; - if (isBright(psp)) + if (bright) { if (fakesec == viewsector || in_area != area_below) { @@ -487,4 +487,4 @@ void GLSceneDrawer::DrawTargeterSprites() { if (psp->GetState() != nullptr) DrawPSprite(player, psp, psp->x, psp->y, false, 0, false); } -} \ No newline at end of file +}