diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fa330e778..ed387eaf63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Bug #3788: GetPCInJail and GetPCTraveling do not work as in vanilla Bug #3836: Script fails to compile when command argument contains "\n" Bug #3876: Landscape texture painting is misaligned + Bug #3890: Magic light source attenuation is inaccurate Bug #3897: Have Goodbye give all choices the effects of Goodbye Bug #3911: [macOS] Typing in the "Content List name" dialog box produces double characters Bug #3920: RemoveSpellEffects doesn't remove constant effects diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index f165b6bd3d..8463b7bfe5 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -15,13 +15,13 @@ #include -#include - #include #include #include #include +#include + #include // KeyframeHolder #include @@ -1789,9 +1789,12 @@ namespace MWRender } else { - effect += 3; - float radius = effect * 66.f; - float linearAttenuation = 0.5f / effect; + // TODO: use global attenuation settings + + // 1 pt of Light magnitude corresponds to 1 foot of radius + float radius = effect * std::ceil(Constants::UnitsPerFoot); + const float linearValue = 3.f; // Currently hardcoded: unmodified Morrowind attenuation settings + float linearAttenuation = linearValue / radius; if (!mGlowLight || linearAttenuation != mGlowLight->getLight(0)->getLinearAttenuation()) { @@ -1813,7 +1816,8 @@ namespace MWRender mGlowLight->setLight(light); } - mGlowLight->setRadius(radius); + // Make the obvious cut-off a bit less obvious + mGlowLight->setRadius(radius * 3); } }