diff --git a/src/playsim/a_dynlight.h b/src/playsim/a_dynlight.h index 12c3c3ffe..4cd010170 100644 --- a/src/playsim/a_dynlight.h +++ b/src/playsim/a_dynlight.h @@ -1,4 +1,5 @@ #pragma once +#include "hw_cvars.h" #include "c_cvars.h" #include "actor.h" #include "cycler.h" @@ -238,6 +239,7 @@ struct FDynamicLight bool IsSpot() const { return !!((*pLightFlags) & LF_SPOT); } bool IsAttenuated() const { return !!((*pLightFlags) & LF_ATTENUATE); } bool Trace() const { return !!((*pLightFlags) & (LF_TRACE)); } + bool TraceActors() const { return Trace() || gl_light_shadows == 2; } bool DontShadowmap() const { return !!((*pLightFlags) & LF_NOSHADOWMAP); } bool DontLightSelf() const { return !!((*pLightFlags) & (LF_DONTLIGHTSELF|LF_DONTLIGHTACTORS)); } // dontlightactors implies dontlightself. bool DontLightActors() const { return !!((*pLightFlags) & LF_DONTLIGHTACTORS); } diff --git a/src/rendering/hwrenderer/scene/hw_spritelight.cpp b/src/rendering/hwrenderer/scene/hw_spritelight.cpp index cf70c44b4..3ee175525 100644 --- a/src/rendering/hwrenderer/scene/hw_spritelight.cpp +++ b/src/rendering/hwrenderer/scene/hw_spritelight.cpp @@ -63,7 +63,7 @@ public: bool TraceLightVisbility(FLightNode* node, const FVector3& L, float dist) { FDynamicLight* light = node->lightsource; - if (!light->Trace() || !level.levelMesh || !Actor) + if (!light->TraceActors() || !level.levelMesh || !Actor) return true; if (!ActorMoved && CurrentBit < 64)