limit light alpha mult to renderflag

This commit is contained in:
Ricardo Luís Vaz Silva 2025-04-29 15:37:28 -03:00
parent 80c36d4069
commit 83b4494c29
5 changed files with 5 additions and 2 deletions

View file

@ -508,6 +508,7 @@ enum ActorRenderFlag2
RF2_ISOMETRICSPRITES = 0x0080,
RF2_SQUAREPIXELS = 0x0100, // apply +ROLLSPRITE scaling math so that non rolling sprites get the same scaling
RF2_STRETCHPIXELS = 0x0200, // don't apply SQUAREPIXELS for ROLLSPRITES
RF2_LIGHTMULTALPHA = 0x0400, // attached lights use alpha as intensity multiplier
};
// This translucency value produces the closest match to Heretic's TINTTAB.

View file

@ -92,7 +92,7 @@ void AddLightToList(FDynLightData &dld, int group, FDynamicLight * light, bool f
cs = 1.0f;
}
if (light->target)
if (light->target && (light->target->renderflags2 & RF2_LIGHTMULTALPHA))
cs *= (float)light->target->Alpha;
float r = light->GetRed() / 255.0f * cs;

View file

@ -186,7 +186,7 @@ void HWDrawInfo::GetDynSpriteLight(AActor *self, float x, float y, float z, FSec
lg = light->GetGreen() / 255.0f;
lb = light->GetBlue() / 255.0f;
if (light->target)
if (light->target && (light->target->renderflags2 & RF2_LIGHTMULTALPHA))
{
float alpha = (float)light->target->Alpha;
lr *= alpha;

View file

@ -390,6 +390,7 @@ static FFlagDef ActorFlagDefs[]=
DEFINE_FLAG(RF2, ISOMETRICSPRITES, AActor, renderflags2),
DEFINE_FLAG(RF2, SQUAREPIXELS, AActor, renderflags2),
DEFINE_FLAG(RF2, STRETCHPIXELS, AActor, renderflags2),
DEFINE_FLAG(RF2, LIGHTMULTALPHA, AActor, renderflags2),
// Bounce flags
DEFINE_FLAG2(BOUNCE_Walls, BOUNCEONWALLS, AActor, BounceFlags),

View file

@ -73,6 +73,7 @@ class DynamicLight : Actor
+FIXMAPTHINGPOS
+INVISIBLE
+NOTONAUTOMAP
+LIGHTMULTALPHA
}
//==========================================================================