Support light fade settings in legacy lighting method

This doesn't change launcher descriptions because the launcher settings are going to be omitted
pull/3236/head
Alexei Kotov 7 months ago
parent b001deeff7
commit ccd36e9413

@ -830,16 +830,16 @@ namespace SceneUtil
if (settings.mLightingMethod == LightingMethod::FFP) if (settings.mLightingMethod == LightingMethod::FFP)
{ {
initFFP(ffpMaxLights); initFFP(ffpMaxLights);
return;
} }
else
{
static bool hasLoggedWarnings = false; static bool hasLoggedWarnings = false;
if (settings.mLightingMethod == LightingMethod::SingleUBO && !hasLoggedWarnings) if (settings.mLightingMethod == LightingMethod::SingleUBO && !hasLoggedWarnings)
{ {
if (!supportsUBO) if (!supportsUBO)
Log(Debug::Warning) Log(Debug::Warning) << "GL_ARB_uniform_buffer_object not supported: switching to shader "
<< "GL_ARB_uniform_buffer_object not supported: switching to shader compatibility lighting mode"; "compatibility lighting mode";
if (!supportsGPU4) if (!supportsGPU4)
Log(Debug::Warning) Log(Debug::Warning)
<< "GL_EXT_gpu_shader4 not supported: switching to shader compatibility lighting mode"; << "GL_EXT_gpu_shader4 not supported: switching to shader compatibility lighting mode";
@ -851,13 +851,14 @@ namespace SceneUtil
else else
initSingleUBO(settings.mMaxLights); initSingleUBO(settings.mMaxLights);
updateSettings(settings.mLightBoundsMultiplier, settings.mMaximumLightDistance, settings.mLightFadeStart);
getOrCreateStateSet()->addUniform(new osg::Uniform("PointLightCount", 0)); getOrCreateStateSet()->addUniform(new osg::Uniform("PointLightCount", 0));
addCullCallback(new LightManagerCullCallback(this)); addCullCallback(new LightManagerCullCallback(this));
} }
updateSettings(settings.mLightBoundsMultiplier, settings.mMaximumLightDistance, settings.mLightFadeStart);
}
LightManager::LightManager(const LightManager& copy, const osg::CopyOp& copyop) LightManager::LightManager(const LightManager& copy, const osg::CopyOp& copyop)
: osg::Group(copy, copyop) : osg::Group(copy, copyop)
, mStartLight(copy.mStartLight) , mStartLight(copy.mStartLight)
@ -942,9 +943,6 @@ namespace SceneUtil
void LightManager::updateSettings(float lightBoundsMultiplier, float maximumLightDistance, float lightFadeStart) void LightManager::updateSettings(float lightBoundsMultiplier, float maximumLightDistance, float lightFadeStart)
{ {
if (getLightingMethod() == LightingMethod::FFP)
return;
mPointLightRadiusMultiplier = lightBoundsMultiplier; mPointLightRadiusMultiplier = lightBoundsMultiplier;
mPointLightFadeEnd = maximumLightDistance; mPointLightFadeEnd = maximumLightDistance;
if (mPointLightFadeEnd > 0) if (mPointLightFadeEnd > 0)

@ -148,13 +148,13 @@ lighting method
Sets the internal handling of light sources. Sets the internal handling of light sources.
'legacy' is restricted to 8 lights per object and emulates fixed function 'legacy' is restricted to 8 lights per object and it is the method closest to
pipeline compatible lighting. fixed function pipeline lighting.
'shaders compatibility' removes the light limit controllable through :ref:`max 'shaders compatibility' removes the light limit controllable through :ref:`max
lights` and follows a modified attenuation formula which can drastically reduce lights` and follows a modified attenuation formula which can drastically reduce
light popping and seams. This mode also enables lighting on groundcover and a light popping and seams. This mode also enables lighting on groundcover.
configurable light fade. It is recommended to use this with older hardware and a It is recommended to use this with older hardware and a
light limit closer to 8. Because of its wide range of compatibility it is set as light limit closer to 8. Because of its wide range of compatibility it is set as
the default. the default.
@ -189,7 +189,7 @@ increase in :ref:`max lights` and thus carries a performance penalty. This
especially helps with abrupt light popping with handheld light sources such as especially helps with abrupt light popping with handheld light sources such as
torches and lanterns. torches and lanterns.
This setting has no effect if :ref:`lighting method` is 'legacy'. In Morrowind, this multiplier is non-existent, i.e. it is always 1.0.
maximum light distance maximum light distance
---------------------- ----------------------
@ -202,7 +202,7 @@ The maximum distance from the camera that lights will be illuminated, applies to
both interiors and exteriors. A lower distance will improve performance. Set both interiors and exteriors. A lower distance will improve performance. Set
this to a non-positive value to disable fading. this to a non-positive value to disable fading.
This setting has no effect if :ref:`lighting method` is 'legacy'. In Morrowind, there is no distance-based light fading.
light fade start light fade start
---------------- ----------------
@ -214,8 +214,7 @@ light fade start
The fraction of the maximum distance at which lights will begin to fade away. The fraction of the maximum distance at which lights will begin to fade away.
Tweaking it will make the transition proportionally more or less smooth. Tweaking it will make the transition proportionally more or less smooth.
This setting has no effect if the :ref:`maximum light distance` is non-positive This setting has no effect if the :ref:`maximum light distance` is non-positive.
or :ref:`lighting method` is 'legacy'.
max lights max lights
---------- ----------

@ -125,7 +125,7 @@ LightsFadeStartMultiplier: "Multiplikator für Startwert der Lichtabblendung"
LightsFadeStartMultiplierTooltip: "Standard: 0,85\nBruchteil der maximalen Lichtreichweite, bei der Lichtquellen langsam zu verblassen beginnen.\n\nKleinere Werte führen zu einem sanfteren Übergang, der allerdings bereits bei geringerer Entfernung startet; größere Werte machen den Übergang abrupter, betreffen aber nur weiter entfernte Lichtquellen." LightsFadeStartMultiplierTooltip: "Standard: 0,85\nBruchteil der maximalen Lichtreichweite, bei der Lichtquellen langsam zu verblassen beginnen.\n\nKleinere Werte führen zu einem sanfteren Übergang, der allerdings bereits bei geringerer Entfernung startet; größere Werte machen den Übergang abrupter, betreffen aber nur weiter entfernte Lichtquellen."
LightsLightingMethodTooltip: "Legt die interne Behandlung von Lichtquellen fest.\n\n LightsLightingMethodTooltip: "Legt die interne Behandlung von Lichtquellen fest.\n\n
„Veraltet“ verwendet immer bis zu 8 Lichtquellen pro Objekt und führt zu Ergebnissen, die denen der Original-Engine am ähnlichsten sind.\n\n „Veraltet“ verwendet immer bis zu 8 Lichtquellen pro Objekt und führt zu Ergebnissen, die denen der Original-Engine am ähnlichsten sind.\n\n
„Shader (Kompatibilitätsmodus)“ entfernt das Maximum von 8 Lichtquellen pro Objekt; Bodenvegetation wird von Lichtquellen beleuchtet und das sanfte Abblenden von Lichtquellen wird aktiviert. Es wird empfohlen, diese Option für ältere Hardware und Maximalwerte für Lichtquellen nahe 8 zu verwenden.\n\n „Shader (Kompatibilitätsmodus)“ entfernt das Maximum von 8 Lichtquellen pro Objekt; Bodenvegetation wird von Lichtquellen beleuchtet. Es wird empfohlen, diese Option für ältere Hardware und Maximalwerte für Lichtquellen nahe 8 zu verwenden.\n\n
„Shader“ bietet alle Vorteile von „Shader (Kompatibilitätsmodus)“, nutzt aber einen moderneren Ansatz, der größere Maximalwerte für Lichtquellen bei geringen bis keinen Leistungseinbußen ermöglicht. Funktioniert möglicherweise nicht auf älterer Hardware." „Shader“ bietet alle Vorteile von „Shader (Kompatibilitätsmodus)“, nutzt aber einen moderneren Ansatz, der größere Maximalwerte für Lichtquellen bei geringen bis keinen Leistungseinbußen ermöglicht. Funktioniert möglicherweise nicht auf älterer Hardware."
LightsMaximumDistance: "Maximale Lichtreichweite" LightsMaximumDistance: "Maximale Lichtreichweite"
LightsMaximumDistanceTooltip: "Standard: 8192 (1 Zelle)\nMaximale Entfernung, bis zu der Lichtquellen noch dargestellt werden (gemessen in In-Game-Einheiten).\n\nEin Wert von 0 entspricht einer unbegrenzten Reichweite." LightsMaximumDistanceTooltip: "Standard: 8192 (1 Zelle)\nMaximale Entfernung, bis zu der Lichtquellen noch dargestellt werden (gemessen in In-Game-Einheiten).\n\nEin Wert von 0 entspricht einer unbegrenzten Reichweite."

@ -120,12 +120,12 @@ LightingMethodShadersCompatibility: "Shaders (compatibility)"
LightingResetToDefaults: "Resets to default values, would you like to continue? Changes to lighting method will require a restart." LightingResetToDefaults: "Resets to default values, would you like to continue? Changes to lighting method will require a restart."
Lights: "Lights" Lights: "Lights"
LightsBoundingSphereMultiplier: "Bounding Sphere Multiplier" LightsBoundingSphereMultiplier: "Bounding Sphere Multiplier"
LightsBoundingSphereMultiplierTooltip: "Default: 1.65\nMultipler for bounding sphere of lights.\nHigher numbers allows for smooth falloff but require an increase in number of max lights.\n\nDoes not effect the illumination or strength of lights." LightsBoundingSphereMultiplierTooltip: "Default: 1.65\nMultiplier for bounding sphere of lights.\nHigher numbers allows for smooth falloff but require an increase in number of max lights.\n\nDoes not effect the illumination or strength of lights."
LightsFadeStartMultiplier: "Fade Start Multiplier" LightsFadeStartMultiplier: "Fade Start Multiplier"
LightsFadeStartMultiplierTooltip: "Default: 0.85\nFraction of maximum distance at which lights will start to fade.\n\nSet this to a low value for slower transitions or a high value for quicker transitions." LightsFadeStartMultiplierTooltip: "Default: 0.85\nFraction of maximum distance at which lights will start to fade.\n\nSet this to a low value for slower transitions or a high value for quicker transitions."
LightsLightingMethodTooltip: "Set the internal handling of light sources.\n\n LightsLightingMethodTooltip: "Set the internal handling of light sources.\n\n
\"Legacy\" always uses 8 lights per object and provides a lighting closest to an original game.\n\n \"Legacy\" always uses 8 lights per object. It provides results most similar to Morrowind's lighting.\n\n
\"Shaders (compatibility)\" removes the 8 light limit. This mode also enables lighting on groundcover and a configurable light fade. It is recommended to use this with older hardware and a light limit closer to 8.\n\n \"Shaders (compatibility)\" removes the 8 light limit. This mode also enables lighting on groundcover. It is recommended to use this with older hardware and a light limit closer to 8.\n\n
\"Shaders\" carries all of the benefits that \"Shaders (compatibility)\" does, but uses a modern approach that allows for a higher max lights count with little to no performance penalties on modern hardware." \"Shaders\" carries all of the benefits that \"Shaders (compatibility)\" does, but uses a modern approach that allows for a higher max lights count with little to no performance penalties on modern hardware."
LightsMaximumDistance: "Maximum Light Distance" LightsMaximumDistance: "Maximum Light Distance"
LightsMaximumDistanceTooltip: "Default: 8192\nMaximum distance at which lights will appear (measured in units).\n\nSet this to 0 to use an unlimited distance." LightsMaximumDistanceTooltip: "Default: 8192\nMaximum distance at which lights will appear (measured in units).\n\nSet this to 0 to use an unlimited distance."

@ -125,7 +125,7 @@ LightsFadeStartMultiplier: "Seuil de perte d'éclat lumineux"
LightsFadeStartMultiplierTooltip: "valeur par défaut: 0.85\nFraction de la distance maximale d'une source à partir de laquelle l'intensité lumineuse commence à décroître.\n\nSélectionnez une valeur basse pour une transition douce ou une valeur plus élevée pour une transition plus abrupte." LightsFadeStartMultiplierTooltip: "valeur par défaut: 0.85\nFraction de la distance maximale d'une source à partir de laquelle l'intensité lumineuse commence à décroître.\n\nSélectionnez une valeur basse pour une transition douce ou une valeur plus élevée pour une transition plus abrupte."
LightsLightingMethodTooltip: "Définit la gestion des sources lumineuses :\n\n LightsLightingMethodTooltip: "Définit la gestion des sources lumineuses :\n\n
\"Traditionnelle\" Chaque objet est éclairé par 8 sources lumineuses. Cet méthode est la plus proche du jeu original.\n\n \"Traditionnelle\" Chaque objet est éclairé par 8 sources lumineuses. Cet méthode est la plus proche du jeu original.\n\n
\"Shaders (mode de compatibilité)\" supprime la limite des 8 sources lumineuses. Cette méthode permet d'éclairer la végétation au sol, mais aussi de configurer à quel distance une source lumineuse s'estompe. Ce choix est recommandé pour les ordinateurs plus anciens avec un nombre de sources lumineuses proche de 8.\n\n \"Shaders (mode de compatibilité)\" supprime la limite des 8 sources lumineuses. Cette méthode permet d'éclairer la végétation au sol. Ce choix est recommandé pour les ordinateurs plus anciens avec un nombre de sources lumineuses proche de 8.\n\n
\"Shaders\" offre tous les bénéfices apportés par \"Shaders (mode de compatibilité)\", mais utilise une approche moderne. Celle-ci permet, sur du matériel moderne, d'augmenter le nombre de sources lumineuses par objet sans perte de performance." \"Shaders\" offre tous les bénéfices apportés par \"Shaders (mode de compatibilité)\", mais utilise une approche moderne. Celle-ci permet, sur du matériel moderne, d'augmenter le nombre de sources lumineuses par objet sans perte de performance."
LightsMaximumDistance: "Distance maximale des sources lumineuses" LightsMaximumDistance: "Distance maximale des sources lumineuses"
LightsMaximumDistanceTooltip: "valeur par défaut: 8192\nDistance maximale d'affichage des sources lumineuses (en unité de distance).\n\nMettez cette valeur à 0 pour une distance d'affichage infinie." LightsMaximumDistanceTooltip: "valeur par défaut: 8192\nDistance maximale d'affichage des sources lumineuses (en unité de distance).\n\nMettez cette valeur à 0 pour une distance d'affichage infinie."

@ -125,7 +125,7 @@ LightsFadeStartMultiplier: "Множитель начала затухания"
LightsFadeStartMultiplierTooltip: "Значение по умолчанию: 0.85\nДоля расстояния (относительно дальности отображения источников света), на которой свет начинает затухать.\n\nНизкие значения ведут к плавному затуханию, высокие - к резкому." LightsFadeStartMultiplierTooltip: "Значение по умолчанию: 0.85\nДоля расстояния (относительно дальности отображения источников света), на которой свет начинает затухать.\n\nНизкие значения ведут к плавному затуханию, высокие - к резкому."
LightsLightingMethodTooltip: "Задает способ обработки источников света.\n\n LightsLightingMethodTooltip: "Задает способ обработки источников света.\n\n
\"Устаревший\" всегда использует 8 источников света на объект и выдает освещение, наиболее близкое к таковому в оригинальной игре.\n\n \"Устаревший\" всегда использует 8 источников света на объект и выдает освещение, наиболее близкое к таковому в оригинальной игре.\n\n
\"Шейдеры (режим совместимости)\" убирает ограничение в 8 источников света. Этот режим также позволяет освещению влиять на анимированную траву и позволяет настроить угасание света на расстоянии. Рекомендуется использовать этот режим на устаревшем аппаратном обеспечении и с количеством источников света на объект около 8.\n\n \"Шейдеры (режим совместимости)\" убирает ограничение в 8 источников света. Этот режим также позволяет освещению влиять на анимированную траву. Рекомендуется использовать этот режим на устаревшем аппаратном обеспечении и с количеством источников света на объект около 8.\n\n
\"Шейдеры\" работает аналогично режиму \"Шейдеры (режим совместимости)\", но использует более современный подход, позволяющий использовать большее количество источников света с минимальным влиянием на производительность на современном аппаратном обеспечении." \"Шейдеры\" работает аналогично режиму \"Шейдеры (режим совместимости)\", но использует более современный подход, позволяющий использовать большее количество источников света с минимальным влиянием на производительность на современном аппаратном обеспечении."
LightsMaximumDistance: "Дальность отображения источников света" LightsMaximumDistance: "Дальность отображения источников света"
LightsMaximumDistanceTooltip: "Значение по умолчанию: 8192\nМаксимальное расстояние, на котором будут отображаться источники света (во внутриигровых единицах измерения).\n\nЕсли 0, то расстояние не ограничено." LightsMaximumDistanceTooltip: "Значение по умолчанию: 8192\nМаксимальное расстояние, на котором будут отображаться источники света (во внутриигровых единицах измерения).\n\nЕсли 0, то расстояние не ограничено."

@ -126,7 +126,7 @@ LightsFadeStartMultiplier: "Blekningsstartmultiplikator"
LightsFadeStartMultiplierTooltip: "Förvalt: 0.85\nFraktion av det maximala avståndet från vilket ljuskällor börjar blekna.\n\nVälj lågt värde för långsammare övergång eller högre värde för snabbare övergång." LightsFadeStartMultiplierTooltip: "Förvalt: 0.85\nFraktion av det maximala avståndet från vilket ljuskällor börjar blekna.\n\nVälj lågt värde för långsammare övergång eller högre värde för snabbare övergång."
LightsLightingMethodTooltip: "Välj intern hantering av ljuskällor.\n\n LightsLightingMethodTooltip: "Välj intern hantering av ljuskällor.\n\n
\"Gammaldags\" använder alltid max 8 ljuskällor per objekt och ger ljussättning likt ett gammaldags spel.\n\n \"Gammaldags\" använder alltid max 8 ljuskällor per objekt och ger ljussättning likt ett gammaldags spel.\n\n
\"Shader (kompatibilitet)\" tar bort begränsningen med max 8 ljuskällor per objekt. Detta läge aktiverar också ljus på marktäckning och ett konfigurerbart ljusbleknande. Rekommenderas för äldre hårdvara tillsammans med en ljusbegränsning nära 8.\n\n \"Shader (kompatibilitet)\" tar bort begränsningen med max 8 ljuskällor per objekt. Detta läge aktiverar också ljus på marktäckning. Rekommenderas för äldre hårdvara tillsammans med en ljusbegränsning nära 8.\n\n
\"Shader\" har alla fördelar som \"Shader (kompatibilitet)\" har, med med ett modernt förhållningssätt som möjliggör fler maximalt antal ljuskällor med liten eller ingen prestandaförlust på modern hårdvara." \"Shader\" har alla fördelar som \"Shader (kompatibilitet)\" har, med med ett modernt förhållningssätt som möjliggör fler maximalt antal ljuskällor med liten eller ingen prestandaförlust på modern hårdvara."
LightsMaximumDistance: "Maximalt ljusavstånd" LightsMaximumDistance: "Maximalt ljusavstånd"
LightsMaximumDistanceTooltip: "Förvalt: 8192\nMaximala avståndet där ljuskällor syns (mätt i enheter).\n\nVärdet 0 ger oändligt avstånd." LightsMaximumDistanceTooltip: "Förvalt: 8192\nMaximala avståndet där ljuskällor syns (mätt i enheter).\n\nVärdet 0 ger oändligt avstånd."

Loading…
Cancel
Save