浏览代码

Merge pull request #319 from Areloch/NewLightingOptions

Implements new shape fadeout and lighting fade/max lights/shadows pref options into the options menu
Brian Roberts 5 年之前
父节点
当前提交
d160e3f020

+ 129 - 9
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 )
 new SimGroup( TextureQualityGroup )
 {
 {
    class = "GraphicsOptionsMenuGroup";
    class = "GraphicsOptionsMenuGroup";
@@ -294,6 +349,8 @@ new SimGroup( ShadowQualityList )
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::Shadows::disable"] = false;
       key["$pref::Shadows::disable"] = false;
       key["$pref::Shadows::textureScalar"] = 1.0;
       key["$pref::Shadows::textureScalar"] = 1.0;
+      key["$pref::PSSM::detailAdjustScale"] = 1.0;
+      key["$pref::allowLocalLightShadows"] = true;
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -305,6 +362,8 @@ new SimGroup( ShadowQualityList )
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::Shadows::disable"] = false;
       key["$pref::Shadows::disable"] = false;
       key["$pref::Shadows::textureScalar"] = 0.5;
       key["$pref::Shadows::textureScalar"] = 0.5;
+      key["$pref::PSSM::detailAdjustScale"] = 0.5;
+      key["$pref::allowLocalLightShadows"] = true;
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -316,6 +375,8 @@ new SimGroup( ShadowQualityList )
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::Shadows::disable"] = false;
       key["$pref::Shadows::disable"] = false;
       key["$pref::Shadows::textureScalar"] = 0.25;
       key["$pref::Shadows::textureScalar"] = 0.25;
+      key["$pref::PSSM::detailAdjustScale"] = 0.25;
+      key["$pref::allowLocalLightShadows"] = false;
 
 
    };
    };
    new ArrayObject()
    new ArrayObject()
@@ -328,6 +389,7 @@ new SimGroup( ShadowQualityList )
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::lightManager"] = "Advanced Lighting";
       key["$pref::Shadows::disable"] = true;
       key["$pref::Shadows::disable"] = true;
       key["$pref::Shadows::textureScalar"] = 0.5;
       key["$pref::Shadows::textureScalar"] = 0.5;
+      key["$pref::allowLocalLightShadows"] = false;
    };
    };
 };
 };
 
 
@@ -342,7 +404,7 @@ new SimGroup( ShadowDistanceList )
       
       
       displayName = "Highest";
       displayName = "Highest";
       
       
-      key["$pref::Shadows::drawDistance"] = 2; 
+      key["$pref::Shadows::drawDistance"] = 1; 
    }; 
    }; 
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -351,7 +413,7 @@ new SimGroup( ShadowDistanceList )
       
       
       displayName = "High";
       displayName = "High";
       
       
-      key["$pref::Shadows::drawDistance"] = 1.5;
+      key["$pref::Shadows::drawDistance"] = 0.75;
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -360,7 +422,7 @@ new SimGroup( ShadowDistanceList )
       
       
       displayName = "Medium";
       displayName = "Medium";
 
 
-      key["$pref::Shadows::drawDistance"] = 1; 
+      key["$pref::Shadows::drawDistance"] = 0.5; 
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -369,7 +431,7 @@ new SimGroup( ShadowDistanceList )
       
       
       displayName = "Low";
       displayName = "Low";
                   
                   
-      key["$pref::Shadows::drawDistance"] = 0.5;  
+      key["$pref::Shadows::drawDistance"] = 0.25;  
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -378,10 +440,68 @@ new SimGroup( ShadowDistanceList )
       
       
       displayName = "Lowest";
       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 )
 new SimGroup( SoftShadowList )
 {
 {
    class = "GraphicsOptionsMenuGroup";
    class = "GraphicsOptionsMenuGroup";
@@ -426,7 +546,7 @@ new SimGroup( LightDistanceList )
       
       
       displayName = "Highest";
       displayName = "Highest";
       
       
-      key["$pref::Lights::drawDistance"] = 2; 
+      key["$pref::Lights::drawDistance"] = 1; 
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -435,7 +555,7 @@ new SimGroup( LightDistanceList )
       
       
       displayName = "High";
       displayName = "High";
       
       
-      key["$pref::Lights::drawDistance"] = 1.5;
+      key["$pref::Lights::drawDistance"] = 0.75;
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -444,7 +564,7 @@ new SimGroup( LightDistanceList )
       
       
       displayName = "Medium";
       displayName = "Medium";
 
 
-      key["$pref::Lights::drawDistance"] = 1; 
+      key["$pref::Lights::drawDistance"] = 0.5; 
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {
@@ -453,7 +573,7 @@ new SimGroup( LightDistanceList )
       
       
       displayName = "Low";
       displayName = "Low";
                   
                   
-      key["$pref::Lights::drawDistance"] = 0.5;  
+      key["$pref::Lights::drawDistance"] = 0.25;  
    };
    };
    new ArrayObject()
    new ArrayObject()
    {
    {

+ 21 - 17
Templates/BaseGame/game/data/ui/guis/optionsMenu.cs

@@ -279,9 +279,11 @@ function OptionsMenu::populateGraphicsSettingsList(%this)
    %highMedLow = "Low\tMedium\tHigh";
    %highMedLow = "Low\tMedium\tHigh";
    %anisoFilter = "Off\t4\t8\t16";
    %anisoFilter = "Off\t4\t8\t16";
    %aaFilter = "Off\t1\t2\t4";
    %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("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("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("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("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("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));
    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)
 function OptionsMenu::applyGraphicsSettings(%this)
 {
 {
-   ShadowQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(0));
-   SoftShadowList.applySetting(OptionsMenuSettingsList.getCurrentOption(1));
-   
-   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));
+   LightingQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(0));
+   ShadowQualityList.applySetting(OptionsMenuSettingsList.getCurrentOption(1));
+   SoftShadowList.applySetting(OptionsMenuSettingsList.getCurrentOption(2));
+   
+   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
    //Update Textures
    reloadTextures();
    reloadTextures();
@@ -319,23 +323,23 @@ function OptionsMenu::applyGraphicsSettings(%this)
    // if its already set or if its not compatible.   
    // if its already set or if its not compatible.   
    //setLightManager( $pref::lightManager );   
    //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(SSAOPostFx, $pref::PostFX::EnableSSAO);
    PostFXManager.settingsEffectSetEnabled(DOFPostEffect, $pref::PostFX::EnableDOF);
    PostFXManager.settingsEffectSetEnabled(DOFPostEffect, $pref::PostFX::EnableDOF);
    PostFXManager.settingsEffectSetEnabled(LightRayPostFX, $pref::PostFX::EnableLightRays);
    PostFXManager.settingsEffectSetEnabled(LightRayPostFX, $pref::PostFX::EnableLightRays);
    PostFXManager.settingsEffectSetEnabled(vignettePostFX, $pref::PostFX::EnableVignette);
    PostFXManager.settingsEffectSetEnabled(vignettePostFX, $pref::PostFX::EnableVignette);
    
    
-   $pref::Video::disableParallaxMapping = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(10));
+   $pref::Video::disableParallaxMapping = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(12));
    
    
    //water reflections
    //water reflections
-   $pref::Water::disableTrueReflections = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(11));
+   $pref::Water::disableTrueReflections = !convertOptionToBool(OptionsMenuSettingsList.getCurrentOption(13));
    
    
    // Check the anisotropic filtering.   
    // Check the anisotropic filtering.   
-   %level = OptionsMenuSettingsList.getCurrentOption(8);
+   %level = OptionsMenuSettingsList.getCurrentOption(10);
    if ( %level != $pref::Video::defaultAnisotropy )
    if ( %level != $pref::Video::defaultAnisotropy )
    {
    {
       if ( %testNeedApply )
       if ( %testNeedApply )
@@ -344,7 +348,7 @@ function OptionsMenu::applyGraphicsSettings(%this)
       $pref::Video::defaultAnisotropy = %level;
       $pref::Video::defaultAnisotropy = %level;
    }
    }
 
 
-   %newFSAA = OptionsMenuSettingsList.getCurrentOption(9);
+   %newFSAA = OptionsMenuSettingsList.getCurrentOption(11);
    if (%newFSAA $= "off")
    if (%newFSAA $= "off")
       %newFSAA = 0;
       %newFSAA = 0;
    if (%newFSAA !$= $pref::Video::AA)
    if (%newFSAA !$= $pref::Video::AA)