Overview
Detailed description for GFX settings and what each does behind the scenes. Suggestions for extra improvements
GFX Options Explanation
As the name implies this controls our rendering resolution. Ideally, this should match your native display resolution (for LCD, for CRT/Projectors you choose whatever suits you).
Recommended: your native resolution
This option controls at which resolution base backbuffer frame is rendered, before getting upscaled to resolution selected in previous setting. For example, if you set your resolution to be 1920×1080 and selected Render Scale to be 80%, then your backbuffer frame will be rendered at 80% of that resolution and then upscaled by the game’s engine renderer to 1920×1080. Lowering this value below 100 will result in performance boost at the cost of very noticeable image quality.
Recommended: 100
Controls the display window mode:
Fullscreen – exclusive fullscreen.
Windowed Fullscreen – borderless [windowed] fullscreen.
Windowed – default window.
Do note that when Fullscreen is selected, game by default starts with Windows 10 FullScreen Optimizations enabled (if applicable on your Win10 version).
Enables or disables vertical synchronization[en.wikipedia.org]. This option gets rid of screen tearing at the potential cost of input delay (1-3 frames) or “stuttering” when you cant maintain stable FPS that matches your refresh rate. You can try reducing the delay by setting FPS Limit 1 frame below max, for example, if your display is 60Hz and you have Vsync enabled, then you can set FPS Limit to 59 for potential (not guaranteed, best case) latency reduction.
Recommended: disable (make sure to use framerate cap in this case)
Built-in Unreal engine FPS limiter. According to multiple input lag tests from https://www.youtube.com/user/a5hun/videos, this limiter (surprisingly) performs as good as external solutions a-la RivaTuner/Nvidia FrameCap. Recommended to be set to the refresh rate of your display when VSync is disabled.
Recommended: set to your display refresh rate
AA is a technique that intended to tackle aliasing (jaggies at the edge of “objects” when camera or object moves) artifacts at fairly lower resolutions. If you play at 4k or above you might not need to bother, if you play at lower resolutions like 1080p/1440p – 3 options available:
None – disabled
FXAA – basic post-processing AA over final frame composition.
TXAA – current “industry standard” for quick and cheap yet somewhat effective AA
Recommended: None or TXAA. Dont ever bother with FXAA, it is vaseline smeared all over your screen. If you play at very high resolution like 4k+, you might wanna disable it to have clearer image.
Changing this option sets r.PostProcessAAQuality to:
Low– 0, Medium– 2, High– 3, Epic– 4, Cine– 6
This controls level of quality that will be used with the selected AA method. When FXAA is in use, this, essentially, just makes image softer and softer with higher level (read: blurrier). With TXAA, things a bit more complicated, because higher not necessarily “better”. From UE documentation page:
For Temporal AA, there is a trade off between fill speed of the effect and quality, the higher the value you use. r.PostProcessAAQuality 2 with Temporal AA is fast to settle but jitter caused by the effect will be more pronounced. r.PostProcessAAQuality 4 will settle slower but will not jitter.
So your trade off is between ghosting and AA quality without artefacts. If you notice a lot of “after-effect ghosting” when moving camera rapidly you might wanna lower your TXAA.
Recommended: High
Self-describing.
Self-describing.
This enables or disables AO regardless of Shadows setting. Strength of this tech also further controlled by Shadows setting.
Enables or disables SSR. This is “faked” (with cubemaps) reflections of the world around you that can be seen in the reflective surfaces like water. Strength of this technique is controlled by Effects setting. Setting Effects to Low essentially disables SSR.
In order to better encompass what this does we will go from highest to lowest.
- Cinematic:
best available option. Sets LightFunctionQuality to 1, enables Distance Field Shadowing, Distance Field AO with quality level of 2, Shadow quality level set to 5 (max) shadow map resolution (for cascades as well) to 4096k, Volumetric Fog with high number of gridsize enabled, CapsuleShadows enabled, shadow cascades set to 10, LightMaxDrawDistanceScale set to max (1). - Epic:
reduces Distance Field AO quality from 2 to 1, reduces shadowmaps resolution to 2048 (shadows and cascades). - High:
max amount of cascades reduced from 10 to 4, shadowmap resolution dropped down to 1024 (cascaded same as Epic), Volumetric Fog gridsize reduced by 50%, small tweaks in some distancing factors and scales for shadows (slightly reduced) - Medium:
shadowmap resolutions all 1024, ShadowQuality lowered to 4, Distance Field AO disabled, VolumetricFog disabled, max cascades set to 1, LightMaxDrawDistanceScale halved - Low:
same as previous except shadowmap resolutions now 512, Volumetric Fog, Capsule Shadows, LightMaxDrawDistanceScale all set to 0. ShadowQuality still 4 and DistanceFieldShadowing still enabled.
- Cinematic:
RefractionQuality set to 2, 64bit scene color format, ParticleLightQuality set to 2, Screen-Space Subsurface-Scattering[docs.unrealengine.com] (SSS) enabled at full quality (sample size 2), particle emitters spawn at full rate, maximum Material quality level set, added blur effect for translucent lighting volumes, Screen Space Reflections (SSR) mode set to 4 (max), Detail mode for particle actors set to max - Epic:
slightly reduced quality of SSS (enabled half-resolution mode) and SSR (from 4 to 3). - High
ParticleLightQuality lowered to 1, particle emitters spawn rate halved, further reduces quality of SSS (samples from 2 to 1), reduced DetailMode from 2 to 1, scene color format set to 32bit, reduced quality of SSR from 3 to 2 - Medium:
disables Refrations, disables SSR, disables blur effect for translucent lighting volumes, lower material quality level, SSS quality scale reduced by 25% from High, ParticleLightQuality disabled, particle emitters spawn rate halved even further (from 0.5.to 0.25) - Low:
disables SSS, halves particle emitters spawn rate down to 0.125, sets MaterialQualityLevel to lowest.
Controls quality of textures and quality of filters applied to said textures. Usually, this option mostly puts pressure on VRAM rather than GPU processing time. Cinematic has highest anisotropy level set, mipmap bias streaming is full with no drops, where as Low disables anisotropy filter, limits texture streaming pool size to VRAM and sets MipMap bias to drop 16 samples. Visually, you see lower-res textures and more textures “pop-in” (super-low res version will stay for longer until it is swapped for higher res).
Static Volumetric Clouds would be the most performant option, followed by Dynamic 2D clouds and finally best looking Dynamic Volumetric Clouds. Visual difference between these can be peeked at here, at 03:14: [link]
Tweaking Anti-Aliasing
As of June 2021, Evrima uses Unreal Engine 4.26.2 which has available new Gen5 TAA/TAU method for Temporal Anti-Aliasing (TAA). Gen5, while being marked as “experimental”, is a fairly stable implementation and brought a bunch of improvements to image quality in terms of AA, most notably less ghosting/smearing and less frame stabilization issues. However, while it offers superior quality, it also incur higher performance penalty. On average, in my test, FPS loss was about 7-16, depends on your GPU and at what graphics quality settings do you run the game (GPU load). Below is the description of what each options does, how can we tweak it and custom presets:
r.PostProcessAAQuality
0 – off
1, 2 – FXAA
3 – fast TemporalAA
4 – high (default TemporalAA)
5, 6 -very high and max respectively
Defines the postprocess anti aliasing method which allows to adjust for quality or performance. These are built-in UE “presets” for AA quality level. In general, 3 is enough when you tweak TAA manually with the rest of options below, but you can try 5-6 see if it is better.
r.TemporalAA.Algorithm [0,1]
0 – forces Gen4 TAA
1 – forces new Gen5 TAA
Gen5 excel in Upsampling quality when you use gfx option Render Target lower than 100. It produces much better upsampled image with less artifacts, therefore, if you use low Render Target values you probably should go and try using value 1.
r.TemporalAASamples [0..64]
Number of jittered positions for temporal AA, basically, how many frames to sample for AA. Higher values may reduce OR increase jitter and flickering depending on frame complexity as well as r.TemporalAACurrentFrameWeight specified value. Default is 4 but you may experiment, in general, higher is better for IQ at the cast of more noticeable blending (blur). Keep in mind the higher your framerate the better this option and TAA in general works.
r.TemporalAACurrentFrameWeight [0..1]
Weight of current frame’s contribution to the history. Low values cause blurriness and ghosting, high values fail to hide jittering. Default is 0.2, you can experiment if you have one of the artifacts to find what suits you, mine is 0.3. Keep in mind sample count from previous directive can affect artifacting.
r.TemporalAA.Upsampling [0,1]
0 – use spatial upscale pass independently of TAA (default);
1 – TemporalAA performs spatial and temporal upscale as screen percentage method.
Whether to do primary screen percentage with temporal AA or not. Enabling this recommended if you use lower than 100 Render Target, especially if you use Gen5.
r.TemporalAA.R11G11B10History [0,1]
Performance optimization, recommended for Gen5 method (1).
r.TemporalAACatmullRom [0,1]
Whether to use a Catmull-Rom filter kernel. Should be a bit sharper than default Gaussian an comes at basically no cost. Recommended value is 1.
r.Tonemapper.Sharpen (0..2)
Not a TAA directive per se but this is a built-in and fairly good sharpening mechanism that applies depth-aware sharpen. If you feel like TAA is still too blurry for you – you can tweak sharpening here, recommended value are around 1, 2 is too much, in my opinion.
Gen4 for performance-centric setup at Render Target=100
Gen5 for image quality with Render Target below 100
Textures and Meshes
Majority of triangles your GPU thugs through in Evrima’s current map is either landscape or foliage/grass. Static meshes dont occupy as much space, they are mostly stuff like rocks, logs and human buildings. Still we can improve the distance view and reduce noticeable “pop-in”:
r.StaticmeshLODDistanceScale [-32..32]
Default game’s value is 1, lowering it to something like 0.6 or 0.5 should be good enough to completely get rid of noticeable LOD (Level of Detail) switching on rocks, but you can experiment. Dont set it unreasonably low, though.
r.SkeletalMeshLODBias [-32..32]
Similar to static mesh bias, this option controls far distance LOD switching for skeletal (i.e. characters/pawns) meshes. Default option is 0 which is good enough, you can try go negative, but there is barely any effect because you wont see player that far in such detail anyway.
If you have set quality of Textures on Cinematic you already have most of the features enabled. Additionally, you can try tweaking the following:
This will increase level of anisotropy for textures up to 16x. Although this might not be much relevant for Evrima since most of the time all you see is grass and foliage and not flat textures.
Second option forces game to all textures that are/will be used in memory and never unload them and thus avoids streaming from disk for the most part. This allows us to set HLOD lower than usual, albeit if you notice some weird issues with LOD switching you can remove first directive. Recommended if you GPU has 8Gb+ VRAM
This lowers texture mipmap lod bias even further than Cinematic for Textures in settings, forcing the game to load high-res textures way early then it would normally stream. That means you pretty much always will see the best quality textures unless object is really far away. Having monster GPU recommended, this pretty much will get rid of texture “pop-in” and as a consequence, TAA will be a bit sharper (but also might increase smearing) because high-quality normal maps will be loaded earlier for most object around you.
P.S. The last 2 codeblocks, while offer you some quality advances also will incur a penalty of longer loading times for the first time ever when you spawn on a server. On a posirive note – consequent spawns should be way much faster than with default settings.
Ambient Occlusion
If you are running Post Processing setting on Epic or Cinematic you already have one of the best values for quality of self-shadowing. That being said, by default, the game still uses plain SSAO (Screen-Space Ambient Occlusion) method for it. If you are feeling adventurous and have something like GTX2070/Radeon 6700XT/6800XT you can try enabling GTAO:
You can tweak the quality further with r.GTAO.NumAngles values and see which you prefer. Cinematic preset for Post Processing sets NumAngles to 4, valid ranges are [1..16].
Additionally, you can try toggling on (1) or off (0) r.GTAO.UseNormals and see if you like the result better, default value is 0 – off.
Lastly, you can try increasing amount of levels for AO via
Max value set by Cinematic is 1. you can try setting it to 2 or 3 (max). This option is costly at higher than 1.
Any AO settings is purely personal preference, in my opinion, so there isnt a “best recommended” setup here.
Mouse/Camera sensitivity
Open Game.ini, add the following section:
These are default values for Pitch and Yaw speed scale (sensitivity). You can tweak them independently if you want different values for looking left/right or up/down or you can sync them for classic sensitivity. Lowering the numerical value (inverse logic for negatives, i.e. you increase it) lowers speed of mouse look and vice versa.
Open Input.ini, add the following directives to the end of
[/script/engine.inputsettings] section:
These are default values for smoothing and FOVscaling for sensitivity. You can adjust them the way you like. FOV scaling is a tricky one, you have to decide for yourself. Sometimes you might want it (like sniper scope in a shooter game may reduce mouse sensitivity), sometimes not.
Controls Rebinding
Open Input.ini and GameUserSettings.ini. First file contains your current saved bindings, 2nd one contains some defaults that are normally not saved into Input.ini. You can read the structure fairly easy, for example:
Here, we have action Air Brake (for Pteranodon), which is bound to Z and does not use any modifier keys like Shift or Alt. You can change it if you want.
If you would like to change some default keys not listed in Input.ini, check GameUserSettings.ini for the action you want and copy it over into Input.ini into [/script/engine.inputsettings] section. For example, WASD movement:
As you can see, it emulates the stick’s X/Y axis, with positive and negative values between 0..1 range. Keyboard does not have pressure support, it always goes to 1 almost instantly. Just change the keys to what you want and add to Input.ini
List of available keys can be found here: [link]
Usage and Removal
All GFX-related codeblocks or single directives should be added to respective Engine.ini located in %LOCALAPPDATA%TheIsleSavedConfigWindowsClient, and appended either to
[SystemSettings]
section or
[/script/engine.renderersettings]
If these section do not exist – create them by copy-pasting from above.
For example:
If you want to reset all custom changes you’ve made via this guide – just delete Engine.ini.
For other changes, like Input/Controls delete respective files mentioned in the section.
Changelog
– added rebinding
– reworked to be general settings & teaks guide
– added Mouse/Input tweaks
– Added Texture, Mesh and AO tweaks
– Added Anti-aliasing tweaks
– Initial release with GFX options description