From 4a8273b82412b30afdcae0bffa2de7d4d08bacb8 Mon Sep 17 00:00:00 2001 From: Areloch Date: Thu, 24 Sep 2020 22:49:05 -0500 Subject: [PATCH] Implements new shape fadeout and lighting fade/max lights/shadows pref options into the options menu --- .../core/rendering/scripts/graphicsOptions.cs | 138 ++++++++++++++++-- .../BaseGame/game/data/ui/guis/optionsMenu.cs | 36 +++-- 2 files changed, 149 insertions(+), 25 deletions(-) diff --git a/Templates/BaseGame/game/core/rendering/scripts/graphicsOptions.cs b/Templates/BaseGame/game/core/rendering/scripts/graphicsOptions.cs index 94f8c38be..353b9b795 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/graphicsOptions.cs +++ b/Templates/BaseGame/game/core/rendering/scripts/graphicsOptions.cs @@ -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() { diff --git a/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs b/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs index f4fd33318..4738c2572 100644 --- a/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs +++ b/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs @@ -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)