Alright, I'm reasonably happy with my latest set (v7), various bugs and other limitations not withstanding.
Changelog:
- Modest rebalance depth biases and texel stability setting for most profiles to clear up some peter panning and self shadowing artifacts at short range, while reducing flicker at medium and long ranges.
- Minor extension of some frustum distances.
- Removed the "NumInteriorFrustums" entry from the Profile_PlanetSurface as redundant.
- Disabled EVSM for all profiles except Profile_PlanetApproach. It's required here to mask some of the worst artifacting issues of planetary shadows when viewed from the ship, but is a net visual downgrade for all other profiles, IMO. The depth bias changes above allowed me to remove it from Profile_PlanetSurface.
- Corrected all of Frontier's bad tab stops and stripped out the depreciated SSAO info, purely for my own editing convenience. This will make comparing the file to the default more difficult, but I have been careful to not change the functionality of anything in the file, except for the contents of the LOW quality directional shadow profiles as listed here.
The new shadow profiles:
XML:
<Profile_General>
<SliceSize>16384</SliceSize>
<NumFrustums>9</NumFrustums>
<FilterQuality>2</FilterQuality>
<Fade>0.999999</Fade>
<CrossFadeCascades>true</CrossFadeCascades>
<AdaptiveCascades>false</AdaptiveCascades>
<NearClipBias>1.0</NearClipBias>
<FrustumCockpit>
<DepthBias>0.000075</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>5.0</FilterKernelSize>
</FrustumCockpit>
<Frustum0>
<EndDistance>20.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0002</DepthBias>
<DepthSlopeBias>5.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum0>
<Frustum1>
<EndDistance>50.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0003</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum1>
<Frustum2>
<EndDistance>125.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0003</DepthBias>
<DepthSlopeBias>5.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum2>
<Frustum3>
<EndDistance>312.5</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0003</DepthBias>
<DepthSlopeBias>4.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum3>
<Frustum4>
<EndDistance>625.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0004</DepthBias>
<DepthSlopeBias>3.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum4>
<Frustum5>
<EndDistance>1250.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0005</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum5>
<Frustum6>
<EndDistance>2500.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0005</DepthBias>
<DepthSlopeBias>2.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum6>
<Frustum7>
<EndDistance>5312.5</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.001</DepthBias>
<DepthSlopeBias>2.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum7>
<Frustum8>
<EndDistance>12800.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.002</DepthBias>
<DepthSlopeBias>2.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>0</TexelStability>
</Frustum8>
<FogShadowMapsEnabled>1</FogShadowMapsEnabled>
<EVSMCascadeFullRes>true</EVSMCascadeFullRes>
</Profile_General>
<Profile_PlanetApproach>
<SliceSize>16384</SliceSize>
<NumFrustums>9</NumFrustums>
<FilterQuality>3</FilterQuality>
<Fade>0.999999</Fade>
<CrossFadeCascades>true</CrossFadeCascades>
<CrossFadeCascadesDistance>300.0</CrossFadeCascadesDistance>
<LastCrossFadeCascadesDistance>1000.0</LastCrossFadeCascadesDistance>
<AdaptiveCascades>false</AdaptiveCascades>
<NearClipBias>1.0</NearClipBias>
<FrustumCockpit>
<DepthBias>0.000075</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>5.0</FilterKernelSize>
</FrustumCockpit>
<Frustum0>
<EndDistance>20.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0001</DepthBias>
<DepthSlopeBias>5.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum0>
<Frustum1>
<EndDistance>50.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0002</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum1>
<Frustum2>
<EndDistance>125.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0002</DepthBias>
<DepthSlopeBias>5.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum2>
<Frustum3>
<EndDistance>312.5</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0002</DepthBias>
<DepthSlopeBias>4.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum3>
<Frustum4>
<EndDistance>625.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0002</DepthBias>
<DepthSlopeBias>4.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum4>
<Frustum5>
<EndDistance>1250.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0003</DepthBias>
<DepthSlopeBias>3.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum5>
<Frustum6>
<EndDistance>2500.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0005</DepthBias>
<DepthSlopeBias>3.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>2</TexelStability>
</Frustum6>
<Frustum7>
<EndDistance>5000.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.001</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>2</TexelStability>
</Frustum7>
<Frustum8>
<EndDistance>12800.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.002</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>2</TexelStability>
</Frustum8>
<FogShadowMapsEnabled>1</FogShadowMapsEnabled>
<EVSMCascadeFullRes>true</EVSMCascadeFullRes>
</Profile_PlanetApproach>
<Profile_PlanetSurface>
<SliceSize>16384</SliceSize>
<NumFrustums>9</NumFrustums>
<FilterQuality>2</FilterQuality>
<Fade>0.999999</Fade>
<CrossFadeCascades>true</CrossFadeCascades>
<LastCrossFadeCascadesDistance>900.0</LastCrossFadeCascadesDistance>
<AdaptiveCascades>false</AdaptiveCascades>
<NearClipBias>1.0</NearClipBias>
<FrustumCockpit>
<DepthBias>0.000025</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
</FrustumCockpit>
<Frustum0>
<EndDistance>5.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.00005</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum0>
<Frustum1>
<EndDistance>10.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0001</DepthBias>
<DepthSlopeBias>7.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum1>
<Frustum2>
<EndDistance>20.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0001</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum2>
<Frustum3>
<EndDistance>40.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0001</DepthBias>
<DepthSlopeBias>5.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum3>
<Frustum4>
<EndDistance>80.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0001</DepthBias>
<DepthSlopeBias>4.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum4>
<Frustum5>
<EndDistance>160.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0002</DepthBias>
<DepthSlopeBias>3.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum5>
<Frustum6>
<EndDistance>450.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0005</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum6>
<Frustum7>
<EndDistance>1500.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.001</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>2</TexelStability>
</Frustum7>
<Frustum8>
<EndDistance>5000.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.002</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>2</TexelStability>
</Frustum8>
<FogShadowMapsEnabled>1</FogShadowMapsEnabled>
<EVSMCascadeFullRes>true</EVSMCascadeFullRes>
</Profile_PlanetSurface>
<Profile_StationInterior>
<SliceSize>16384</SliceSize>
<NumFrustums>1</NumFrustums>
<FilterQuality>2</FilterQuality>
<Fade>0.999999</Fade>
<CrossFadeCascades>true</CrossFadeCascades>
<AdaptiveCascades>false</AdaptiveCascades>
<FrustumCockpit>
<DepthBias>0.000075</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>5.0</FilterKernelSize>
</FrustumCockpit>
<Frustum0>
<EndDistance>1470.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0005</DepthBias>
<DepthSlopeBias>2.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>0</TexelStability>
</Frustum0>
<FogShadowMapsEnabled>1</FogShadowMapsEnabled>
<EVSMCascadeFullRes>true</EVSMCascadeFullRes>
</Profile_StationInterior>
<Profile_AsteroidField>
<SliceSize>16384</SliceSize>
<NumFrustums>9</NumFrustums>
<FilterQuality>2</FilterQuality>
<Fade>0.999999</Fade>
<CrossFadeCascades>true</CrossFadeCascades>
<AdaptiveCascades>false</AdaptiveCascades>
<NearClipBias>1.0</NearClipBias>
<FrustumCockpit>
<DepthBias>0.000075</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>5.0</FilterKernelSize>
</FrustumCockpit>
<Frustum0>
<EndDistance>20.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0002</DepthBias>
<DepthSlopeBias>5.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum0>
<Frustum1>
<EndDistance>50.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0003</DepthBias>
<DepthSlopeBias>6.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum1>
<Frustum2>
<EndDistance>125.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.0005</DepthBias>
<DepthSlopeBias>5.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum2>
<Frustum3>
<EndDistance>312.5</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.001</DepthBias>
<DepthSlopeBias>4.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum3>
<Frustum4>
<EndDistance>625.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.002</DepthBias>
<DepthSlopeBias>3.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum4>
<Frustum5>
<EndDistance>1250.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.003</DepthBias>
<DepthSlopeBias>3.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum5>
<Frustum6>
<EndDistance>2500.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.003</DepthBias>
<DepthSlopeBias>3.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum6>
<Frustum7>
<EndDistance>5000.0</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.003</DepthBias>
<DepthSlopeBias>2.5</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>1</TexelStability>
</Frustum7>
<Frustum8>
<EndDistance>12800.000000</EndDistance>
<ShaderBias>0.0003</ShaderBias>
<ShaderSlopeBias>0.003</ShaderSlopeBias>
<DepthBias>0.003</DepthBias>
<DepthSlopeBias>2.0</DepthSlopeBias>
<FilterKernelSize>3.0</FilterKernelSize>
<TexelStability>0</TexelStability>
</Frustum8>
<AsteroidShadowsEnabled>1</AsteroidShadowsEnabled>
<FogShadowMapsEnabled>1</FogShadowMapsEnabled>
<EVSMCascadeFullRes>true</EVSMCascadeFullRes>
</Profile_AsteroidField>
I've also started tuning the spot shadow quality, but as this doesn't require any entries to be added I have not placed the changes in GraphicsConfiguration.xml, but in GraphicsConfigurationOverride.xml, which is in the game's user profile directory and where most .xml tweaks should go. As I've noted elsewhere, I need to use the main/base file to insert shadow frustums, as the Override is, well, an override...and it can't override stuff that doesn't exist yet.
If anyone wants to try these Spot Shadow modifications, they can add this to their override manually (I'm also replacing LOW here, if you don't want to do that, replace whatever quality preset you want):
XML:
<SpotShadows_Low>
<NumCacheShadows>2</NumCacheShadows>
<NumSpotShadows>6</NumSpotShadows>
<CacheShadowAtlasSize>16384</CacheShadowAtlasSize>
<CacheShadowSize>2048</CacheShadowSize>
<SpotFilterQuality>3</SpotFilterQuality>
<EVSMSpotFullRes>true</EVSMSpotFullRes>
</SpotShadows_Low>
New GraphicsConfiguration.xml for directional shadows only is attached to this post.
Well, that's odd. I haven't noticed it as much because I predominantly use Apex now and it always levels off by the time it requests permission.
I believe it's a hidden concourse shadow profile that loads any time one requests docking permission at, or loads into, a surface outpost. This is probably part of how they improved the frame rate in concourses...running the full shadow profile out the concourse window would have been costly. It's damn annoying that I can't yet adjust it though, as it's ugly.
On a side note, it always surprised me a bit that the NPCs have fairly detailed flashlights. Even at longer distances, they still seem to cast directional shadows. Is this detrimental for performance?
Those are spot shadows and all volumetric lights will cast them out to their maximum illumination range. They are capped in number and quality in accordance with the setting, but yes, they can also be costly. Personally, I find the performance hit to be negligible on higher-end hardware and have been increasing their quality, rather than reducing it. However, I haven't pushed the number of spot shadows much (I kept six in the override profile above, but I might go to eight) because that can quickly add up.