also do Actor Trace for non-lightmaplights if gl_light_shadows is 2

This commit is contained in:
Ricardo Luís Vaz Silva 2024-12-18 03:16:31 -03:00 committed by Nash Muhandes
commit 5d35ae9b4d
2 changed files with 3 additions and 1 deletions

View file

@ -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); }

View file

@ -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)