Merge pull request #319 from Areloch/NewLightingOptions

Implements new shape fadeout and lighting fade/max lights/shadows pref options into the options menu
This commit is contained in:
Brian Roberts 2020-09-26 22:45:06 -05:00 committed by GitHub
commit d160e3f020
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 149 additions and 25 deletions

View file

@ -100,6 +100,61 @@ new SimGroup( MeshQualityGroup )
};
};
new SimGroup( MeshDrawDistQualityGroup )
{
class = "GraphicsOptionsMenuGroup";
new ArrayObject()
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "High";
key["$pref::useStaticObjectFade"] = false;
key["$pref::staticObjectFadeStart"] = 75;
key["$pref::staticObjectFadeEnd"] = 100;
key["$pref::staticObjectUnfadeableSize"] = 75;
};
new ArrayObject( )
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "Medium";
key["$pref::useStaticObjectFade"] = true;
key["$pref::staticObjectFadeStart"] = 75;
key["$pref::staticObjectFadeEnd"] = 100;
key["$pref::staticObjectUnfadeableSize"] = 75;
};
new ArrayObject()
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "Low";
key["$pref::useStaticObjectFade"] = true;
key["$pref::staticObjectFadeStart"] = 50;
key["$pref::staticObjectFadeEnd"] = 75;
key["$pref::staticObjectUnfadeableSize"] = 100;
};
new ArrayObject()
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "Lowest";
key["$pref::useStaticObjectFade"] = true;
key["$pref::staticObjectFadeStart"] = 25;
key["$pref::staticObjectFadeEnd"] = 50;
key["$pref::staticObjectUnfadeableSize"] = 200;
};
};
new SimGroup( TextureQualityGroup )
{
class = "GraphicsOptionsMenuGroup";
@ -294,6 +349,8 @@ new SimGroup( ShadowQualityList )
key["$pref::lightManager"] = "Advanced Lighting";
key["$pref::Shadows::disable"] = false;
key["$pref::Shadows::textureScalar"] = 1.0;
key["$pref::PSSM::detailAdjustScale"] = 1.0;
key["$pref::allowLocalLightShadows"] = true;
};
new ArrayObject()
{
@ -305,6 +362,8 @@ new SimGroup( ShadowQualityList )
key["$pref::lightManager"] = "Advanced Lighting";
key["$pref::Shadows::disable"] = false;
key["$pref::Shadows::textureScalar"] = 0.5;
key["$pref::PSSM::detailAdjustScale"] = 0.5;
key["$pref::allowLocalLightShadows"] = true;
};
new ArrayObject()
{
@ -316,6 +375,8 @@ new SimGroup( ShadowQualityList )
key["$pref::lightManager"] = "Advanced Lighting";
key["$pref::Shadows::disable"] = false;
key["$pref::Shadows::textureScalar"] = 0.25;
key["$pref::PSSM::detailAdjustScale"] = 0.25;
key["$pref::allowLocalLightShadows"] = false;
};
new ArrayObject()
@ -328,6 +389,7 @@ new SimGroup( ShadowQualityList )
key["$pref::lightManager"] = "Advanced Lighting";
key["$pref::Shadows::disable"] = true;
key["$pref::Shadows::textureScalar"] = 0.5;
key["$pref::allowLocalLightShadows"] = false;
};
};
@ -342,7 +404,7 @@ new SimGroup( ShadowDistanceList )
displayName = "Highest";
key["$pref::Shadows::drawDistance"] = 2;
key["$pref::Shadows::drawDistance"] = 1;
};
new ArrayObject()
{
@ -351,7 +413,7 @@ new SimGroup( ShadowDistanceList )
displayName = "High";
key["$pref::Shadows::drawDistance"] = 1.5;
key["$pref::Shadows::drawDistance"] = 0.75;
};
new ArrayObject()
{
@ -360,7 +422,7 @@ new SimGroup( ShadowDistanceList )
displayName = "Medium";
key["$pref::Shadows::drawDistance"] = 1;
key["$pref::Shadows::drawDistance"] = 0.5;
};
new ArrayObject()
{
@ -369,7 +431,7 @@ new SimGroup( ShadowDistanceList )
displayName = "Low";
key["$pref::Shadows::drawDistance"] = 0.5;
key["$pref::Shadows::drawDistance"] = 0.25;
};
new ArrayObject()
{
@ -378,10 +440,68 @@ new SimGroup( ShadowDistanceList )
displayName = "Lowest";
key["$pref::Shadows::drawDistance"] = 0.25;
key["$pref::Shadows::drawDistance"] = 0.1;
};
};
new SimGroup( LightingQualityList )
{
class = "GraphicsOptionsMenuGroup";
new ArrayObject()
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "High";
key["$pref::maximumNumOfLights"] = -1;
key["$pref::useLightFade"] = false;
key["$pref::lightFadeStart"] = 50;
key["$pref::lightFadeEnd"] = 75;
};
new ArrayObject()
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "High";
key["$pref::maximumNumOfLights"] = 15;
key["$pref::useLightFade"] = true;
key["$pref::lightFadeStart"] = 50;
key["$pref::lightFadeEnd"] = 75;
};
new ArrayObject()
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "Medium";
key["$pref::maximumNumOfLights"] = 10;
key["$pref::useLightFade"] = true;
key["$pref::lightFadeStart"] = 25;
key["$pref::lightFadeEnd"] = 50;
};
new ArrayObject()
{
class = "GraphicsQualityLevel";
caseSensitive = true;
displayName = "Low";
key["$pref::maximumNumOfLights"] = 5;
key["$pref::useLightFade"] = true;
key["$pref::lightFadeStart"] = 10;
key["$pref::lightFadeEnd"] = 25;
};
};
new SimGroup( SoftShadowList )
{
class = "GraphicsOptionsMenuGroup";
@ -426,7 +546,7 @@ new SimGroup( LightDistanceList )
displayName = "Highest";
key["$pref::Lights::drawDistance"] = 2;
key["$pref::Lights::drawDistance"] = 1;
};
new ArrayObject()
{
@ -435,7 +555,7 @@ new SimGroup( LightDistanceList )
displayName = "High";
key["$pref::Lights::drawDistance"] = 1.5;
key["$pref::Lights::drawDistance"] = 0.75;
};
new ArrayObject()
{
@ -444,7 +564,7 @@ new SimGroup( LightDistanceList )
displayName = "Medium";
key["$pref::Lights::drawDistance"] = 1;
key["$pref::Lights::drawDistance"] = 0.5;
};
new ArrayObject()
{
@ -453,7 +573,7 @@ new SimGroup( LightDistanceList )
displayName = "Low";
key["$pref::Lights::drawDistance"] = 0.5;
key["$pref::Lights::drawDistance"] = 0.25;
};
new ArrayObject()
{

View file

@ -279,9 +279,11 @@ function OptionsMenu::populateGraphicsSettingsList(%this)
%highMedLow = "Low\tMedium\tHigh";
%anisoFilter = "Off\t4\t8\t16";
%aaFilter = "Off\t1\t2\t4";
OptionsMenuSettingsList.addOptionRow("Lighting Quality", getQualityLevels(LightingQualityList), false, "", -1, -30, true, "Amount and drawdistance of local lights", getCurrentQualityLevel(LightingQualityList));
OptionsMenuSettingsList.addOptionRow("Shadow Quality", getQualityLevels(ShadowQualityList), false, "", -1, -30, true, "Shadow revolution quality", getCurrentQualityLevel(ShadowQualityList));
OptionsMenuSettingsList.addOptionRow("Soft Shadow Quality", getQualityLevels(SoftShadowList), false, "", -1, -30, true, "Amount of softening applied to shadowmaps", getCurrentQualityLevel(SoftShadowList));
OptionsMenuSettingsList.addOptionRow("Mesh Quality", getQualityLevels(MeshQualityGroup), false, "", -1, -30, true, "Fidelity of rendering of mesh objects", getCurrentQualityLevel(MeshQualityGroup));
OptionsMenuSettingsList.addOptionRow("Object Draw Distance", getQualityLevels(MeshDrawDistQualityGroup), false, "", -1, -30, true, "Dictates if and when static objects fade out in the distance", getCurrentQualityLevel(MeshDrawDistQualityGroup));
OptionsMenuSettingsList.addOptionRow("Texture Quality", getQualityLevels(TextureQualityGroup), false, "", -1, -30, true, "Fidelity of textures", getCurrentQualityLevel(TextureQualityGroup));
OptionsMenuSettingsList.addOptionRow("Terrain Quality", getQualityLevels(TerrainQualityGroup), false, "", -1, -30, true, "Quality level of terrain objects", getCurrentQualityLevel(TerrainQualityGroup));
OptionsMenuSettingsList.addOptionRow("Decal Lifetime", getQualityLevels(DecalLifetimeGroup), false, "", -1, -30, true, "How long decals are rendered", getCurrentQualityLevel(DecalLifetimeGroup));
@ -301,15 +303,17 @@ function OptionsMenu::populateGraphicsSettingsList(%this)
function OptionsMenu::applyGraphicsSettings(%this)
{
ShadowQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(0));
SoftShadowList.applySetting(OptionsMenuSettingsList.getCurrentOption(1));
LightingQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(0));
ShadowQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(1));
SoftShadowList.applySetting(OptionsMenuSettingsList.getCurrentOption(2));
MeshQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(2));
TextureQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(3));
TerrainQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(4));
DecalLifetimeGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(5));
GroundCoverDensityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(6));
ShaderQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(7));
MeshQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(3));
MeshDrawDistQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(4));
TextureQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(5));
TerrainQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(6));
DecalLifetimeGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(7));
GroundCoverDensityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(8));
ShaderQualityGroup.applySetting(OptionsMenuSettingsList.getCurrentOption(9));
//Update Textures
reloadTextures();
@ -319,23 +323,23 @@ function OptionsMenu::applyGraphicsSettings(%this)
// if its already set or if its not compatible.
//setLightManager( $pref::lightManager );
$pref::PostFX::EnableSSAO = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(12));
$pref::PostFX::EnableDOF = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(13));
$pref::PostFX::EnableVignette = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(14));
$pref::PostFX::EnableLightRays = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(15));
$pref::PostFX::EnableSSAO = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(14));
$pref::PostFX::EnableDOF = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(15));
$pref::PostFX::EnableVignette = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(16));
$pref::PostFX::EnableLightRays = convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(17));
PostFXManager.settingsEffectSetEnabled(SSAOPostFx, $pref::PostFX::EnableSSAO);
PostFXManager.settingsEffectSetEnabled(DOFPostEffect, $pref::PostFX::EnableDOF);
PostFXManager.settingsEffectSetEnabled(LightRayPostFX, $pref::PostFX::EnableLightRays);
PostFXManager.settingsEffectSetEnabled(vignettePostFX, $pref::PostFX::EnableVignette);
$pref::Video::disableParallaxMapping = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(10));
$pref::Video::disableParallaxMapping = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(12));
//water reflections
$pref::Water::disableTrueReflections = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(11));
$pref::Water::disableTrueReflections = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(13));
// Check the anisotropic filtering.
%level = OptionsMenuSettingsList.getCurrentOption(8);
%level = OptionsMenuSettingsList.getCurrentOption(10);
if ( %level != $pref::Video::defaultAnisotropy )
{
if ( %testNeedApply )
@ -344,7 +348,7 @@ function OptionsMenu::applyGraphicsSettings(%this)
$pref::Video::defaultAnisotropy = %level;
}
%newFSAA = OptionsMenuSettingsList.getCurrentOption(9);
%newFSAA = OptionsMenuSettingsList.getCurrentOption(11);
if (%newFSAA $= "off")
%newFSAA = 0;
if (%newFSAA !$= $pref::Video::AA)