- Joined
- Mar 8, 2007
- Location
- My Northbridge, Toronto
BASIC TUNING
Basic computer performance:
I don't want to recreate the wheel but their are many things to do to increase performance in games with your computer. Details on how to do these things can be found by doing a google search for any of the following.
* Latest drivers for your video card, motherboard, sound card can improve things greatly at times.
* Defrag your hard drive. It's prefferable to defrag 'before' installing so that the files stay close together and contiguous.
* If you only have 512MB or 1GB memory, 2GB is highly recommended.
* Go into your driver control panel to make sure antialiasing(AA) or anisotropic filtering(AF) is not enabled unless you want them to be, they effect performance alot. Also you can change texture filtering quality to provide more performance in the drivers.
* If you are running Vista make sure to be using the current hotfixes, some effect performance and memory usage tremendously. Nvidia has a great list of recommended ones here: Vista hotfixes
* A video card like an 8800 GT for $250 will provide tremendous results if you haven't upgraded in a long time.
* Disabling any unneeded running process, especially antivirus, while playing is recommended.
Resolution:
Resolution has a large impact because the game has so much geometry that the fillrate demands of large resolutions is beyond what people are used to. If you can lower resolution this will help gain many fps and provide smoother play. If you have an LCD you need to use what is called 1:1 pixel mapping, or otherwise known as disabling scaling. This allows the image to shrink but the quality of the image stays incredibly good. Scaling on the other hand, always looks bad if using anything other than your native resolution. Scaling can be disabled on some monitors. If your monitor doesn't support this feature some drivers support it. With nvidia you can disable it like so, CLICK HERE. So shrinking the image while maintaining incredible quality works well for performance, you can always slide your monitor closer you then won't notice the image is smaller.
Custom resolutions can be used by using 'r_width=x' and 'r_height=x'. See below on advanced tweaking on how to use variables.
In-Game Settings:
The settings that have the biggest effect on performance are firstly shaders. This game is one of the most shader intensive games on the market. Going from high to medium shader settings works real well in giving an average of anywhere from 7-10 fps or more, depending on some variables. Next are Shadows and Post Processing. Shadows from high to medium looks very good still and provide a good boost of performance. Post processing has a big effect as well. The thing that people notice most about post processing is motion blur and depth of field. These can be easily turned on/off individually if desired seperate from the post process drop down box, as will be seen in the advanced tweaking section. Textures setting affects video memory usage quite a bit which we will look at next.
Video Memory:
Using beyond the amount of memory that is locally on the video card will produce performance problems like stuttering and hitching due to having to fetch data from system RAM over the much higher latency PCI express bus. In other words, adjust settings/resolution in the game not to exceed your video RAM, otherwise you will experience overall performance issues and the periodic flickering of geometry and LOD's as it streams in. The game is very video memory intensive. Resolution and AA effect the amount of video memory the game uses tremendously. Here is a breakdown of video memory across different settings and resolutions.
* Windows XP
* Nvidia Driver 169.01
1280x1024 medium
* NoAA 184MB
* 2xAA 295MB
* 4xAA 355MB
* 8xAA 395MB
1280x1024 high
* NoAA 315MB
* 2xAA 375MB
* 4xAA 440MB
* 8xAA 470MB
-Texture medium-
* NoAA 300MB
* 2xAA 363MB
* 4xAA 423MB
* 8xAA 445MB
1680x1050 medium
* NoAA 223MB
* 2xAA 375MB
* 4xAA 455MB
1680x1050 high
* NoAA 368MB
* 2xAA 456MB
* 4xAA 535MB
-Texture medium-
* NoAA 340MB
* 2xAA 428MB
* 4xAA 505MB
1920x1200 Medium
* NoAA 240MB
* 2xAA 430MB
* 4xAA 535MB
1920x1200 High
* NoAA 400MB
* 2xAA 515MB
* 4xAA 615MB
-Texture Medium-
* NoAA 370MB
* 2xAA 475MB
* 4xAA 585MB
AA clearly makes a large impact in video memory. Different game levels may change these numbers. Changing textures from medium to low makes no appreciable difference since it is still using the lowspec pak. The devs have made huge advances in optimizing this area since earlier builds of the game, either that or the textures are quite lower in quality, infact these are the numbers medium textures used to give as if high textures are missing. Final shipping game may reflect differences here, will update accordingly. The textures setting alone no longer makes the difference it did in earlier builds regardless of high/medium/low setting, which again seems to give some indication higher textures have been removed temporarily or entirely.
Breakdown by video card memory:
256MB Video - 1680x1050 medium without AA or 1280x1024 medium with AA.
8800 GTS 320MB - Handles up 1680x1050 medium no aa, can go to high with some thrashing. Only AA at 1280x1024 looks to be viable with that memory limit.
512MB Video - Comes into it's first wall at 1680x1050 4xAA on high. Performance and not memory will impact you here.
8800 GTS 640MB - Handles up to 1920x1200 4x AA (All High). performance makes that out of reach on todays HW.
768MB and above - Memory will not be your limiting factor unless going to 2560x1600 with AA. Your GPU handling the raw processing of the geometry and shaders at that high resolution will be out of reach. I don't doubt that 1GB can be reached by tweaking Crysis and high resolutions with max AA on tomorrows HW. I already have found ways to approach 650MB at only 1280x1024.
Basic video memory tips:
* Find your video memory ceiling with resolution and texture setting first. Then adjust other parts of the game that are affecting raw performance like shaders or shadows until you get your acceptable performance. If you don't properly anticipate video memory usage, you won't realize why it is hitching on you, regardless of other settings.
* You don't have to turn everything to medium to conserve memory, textures have the biggest effect by far.
* Remember as more players enter the map this memory will climb a bit, as well as larger out door levels. Also as you stay in the game for a while this number will rise a little. I cached all the outdoors, but not the indoors.
* Adding any tweaks for higher quality, especially along the lines of LOD or view distance, has the potential to raise memory usage even further.
* The higher you go over your limit, the worse performance, texture stuttering, hitching and popping of geometry will become.
* If your resolution doesn't appear just use something close, like 1680x1050 is close to 1600x1200.
Benchmarking:
Crysis came with two benchmarks to test and compare your performance. A GPU benchmark and a CPU benchmark stressing physics. They can be found in the Bin32 or Bin64 folders. Just double click on them to start. The game will run through 4 loops of the benchmark. When it's done it will show you the results, I suggest you ignore the first one since it was just caching the level and assets on the first run. You can make your own benchmarks but for now these two work well as standard tests. See the benchmarking tool mentioned in post 3 for an improved benchmarking experience.
Antialiasing and Anisotropic filtering in Crysis
First of all AA is a serious performance drain. More so than other games because of the incredible amount of triangles and polys in the scene. AA is only recommended for the highest end GPU's and keep in mind high resolutions will be more intensive. So if you choose to use it then keep in mind the video memory that will be used (shown above). There is some interesting information starting to come out about AA. Apparently it is preferred to use the in-game AA settings as the proper way to use AA. In other words, don't use the driver control panel but control it from in game.
Additionally, HardOCP in their recent 8800GT review had this quote. "This comes directly from NVIDIA’s James Wang on the use of Transparency Antialiasing in Crysis: ” Crysis handles foliage very differently from normal engines so TRMS/SS won't work. Bit of a shame really. The game has some built-in foliage AA, but it only kicks in in "Very high" quality mode.”"
I am actually pretty sure it can be enabled at high as well, not just very high. High and very high shader settings are compatible with in game AA, while low and medium shaders are not. Regardless of in game shader settings if AA is enabled, High shaders will also need to be enabled. If AA is currently enabled, but shaders is set to medium or low, AA will automatically be disabled by the game. So it will take a good medium to high end card to use AA not only because AA is demanding on it's own but because you will need to run atleast high shaders as well.
As to Anisotropic Filtering, it can only be enabled in the driver settings. Unfortunately there is a bug with the nvidia drivers that makes a white halo around distant bushes and trees. I believe this bug only shows itself on a particular. This apparently will be fixed with a future driver.
Vsync
Vsynch can be enabled in the game with r_vsync = 1. It is off by default.
ADVANCED TWEAKING
Customizing the game:
The in-game settings are like using a paint roller on a canvas, while tweaking is like the fine brush of the artist. The roller gets the job done but it's not going to be as fulfilling as it could be. You need a fine brush to make it the way you like. The developers didn't want to burden you with 20 choices of drop down boxes so they instead made those broad strokes for you. Unfortunately the difference in performance and quality between low/medium/high/veryhigh can be staggering. Sometimes a move from high to medium can change 20 variables, but it may not be necessary to change all 20 when only a few really effect performance or quality. The fine strokes will allow you to get exactly what you want and Crytek has really given us the ability to change just about everything in the game you would want. You do not have to sacrifice as much quality for performance as you may think. Sometimes you can keep settings high or medium and change one variable that is the big performance tanker or one setting that brings back some good quality at little cost. Enough intro lets get busy.
How to make an autoexec.cfg
In the early days of the beta people modified the cvar groups game files because it was the best they knew, if you have heard about this I do not recommend it. It changes the way your in-game settings work permanently and changing to medium or high won't have the desired effect anymore. We later learned that you can make an autoexec.cfg file in the "Crysis SP Demo" folder. Tweaks are made up of Console Variables (cvars for short), a list of the ones currently used by the game can be seen below. In this file you put in the tweaks you want one by one and the game will use them when it starts up.
View Performance In Game
Place the line r_displayinfo=1 in your autoexec.cfg. This will show you fps, system memory usage(not video), triangle count, etc. Also you can use fraps if you wish to show fps as well as take screenshots and make movies of the game.
Enable The Console:
By default the devs have disabled the console unless you learn the trick to enable it. You can enable it by adding the line con_restricted=0 to your autoexec.cfg and you can then use tweaks while in game in real time and watch with your own eyes the quality and performance changes. Pull down the console while in game by hitting the ~ (tilde) key. From there you can type in a cvar, without a value, and the game will tell you the current value. If you want to test a tweak, just type it in but instead of using an equals sign to put in a value like in the autoexec.cfg, just use a space. Example in console: r_displayinfo 1
If you have the fps shown in game you will see the performance effect of different settings.
Enhancing on DX9:
It is a very tweakable game. Crytek have given us the ability to tweak many many things to reach Very High equivalent settings and even far far beyond. I will give you a break down of every exact Very High setting(used in DX10) for reference. This is the real list of every setting and their values. So you can use this list and mimic exactly very high in DX9 to the fullest extent possible. Just add this list to an autoexec.cfg and you will have very high for DX9.
sys_spec_GameEffects = 3
sys_spec_ObjectDetail = 3
sys_spec_Particles = 3
sys_spec_Physics = 3
sys_spec_PostProcessing = 3
sys_spec_Quality = 3
sys_spec_Shading = 3
sys_spec_Shadows = 3
sys_spec_Texture = 3
sys_spec_VolumetricEffects = 3
sys_spec_Water = 3
e_foliage_wind_activation_dist = 25
e_max_entity_lights = 16
e_obj_quality = 4
e_particles_max_emitter_draw_screen = 32
e_particles_quality = 4
e_shadows_cast_view_dist_ratio = 0.8
e_vegetation_sprites_distance_ratio = 1.5
e_view_dist_ratio_detail = 30
e_view_dist_ratio_vegetation = 45
e_water_ocean_fft = 1
e_water_tesselation_amount = 10
es_DebrisLifetimeScale = 1
g_battleDust_enable = 1
g_breakage_particles_limit = 250
g_ragdollDistance = 40
g_ragdollMinTime = 15
q_Renderer = 3
q_ShaderFX = 3
q_ShaderGeneral = 3
q_ShaderGlass = 3
q_ShaderHDR = 3
q_ShaderIce = 3
q_ShaderMetal = 3
q_ShaderPostProcess = 3
q_ShaderShadow = 3
q_ShaderSky = 3
q_ShaderTerrain = 3
q_ShaderVegetation = 3
q_ShaderWater = 3
r_BeamsDistFactor = .05
r_BeamsMaxSlices = 200
r_ColorGrading = 1
r_DepthOfField = 2
r_DetailNumLayers = 2
r_DynTexAtlasSpritesMaxSize = 32
r_MotionBlur = 4
r_ShadowJittering = 2.5
r_SSAO_quality = 2
r_SSAO_radius = 2
r_sunshafts = 1
r_TexAtlasSize = 2048
r_Usepom = 1
r_WaterReflectionsQuality = 3
r_WaterUpdateDistance = 0.2
In Game Settings:
This chart shows the breakdown of "every" console variable that is changed by the in-game settings. It color codes every different type of in game menu(textures, game quality, shadows,etc) and shows you what variables actually change, when you change a drop down menu in the game, and what values they change to. To see more console variables that cannot be changed in game and to see all the definitions of the settings, follow the links below the image.
How do I do start?: summary
You can start by making an autoexec.cfg in the main game folder. Add two settings to start.
Just copy/paste them.
r_displayinfo=1
con_restricted=0
Now you can open the console and start trying tweaks that look interesting one by one. Use your autoexec.cfg and fill it with the tweaks you like. When you check your in game settings it will show 'custom' if you have tweaks in your autoexec affecting that menu section. I will detail some of the ones I think are cool here next.
Quality Comparisons: Some notable settings that effect quality.
LIGHT AND WATER:
r_sunshafts = 1 turns on the hidden feature of light shafts that dance through trees and past objects. Available in game through Very High in-game setting.
The bottom is default all High in-game settings, the top is r_sunshafts = 1. Comparison pics...
The following 3 settings work along with sun shafts...
r_Beams - Toggles the volumetric light beams. Default is 3, it’s an optimized beam with glow support. 0 disables beams, 2 uses fake beams with probably beneficial performance (performance untested). 1 is the best and uses the real full resolution beams but it is slower.
r_BeamsDistFactor - Distance between slices. Default is 0.01 in meters(likely reserved for Ultra High) and is likely the best setting for beams making it through the densest vegetation. You can try it and see what you like best (currently medium and high use 0.5, low uses 1).
r_BeamsMaxSlices - Number of volumetric slices allowed per light beam. Default is 200 (reserved for very high specs). The max here is 300, so go ultra if you think you can really handle the performance hit.
e_water_ocean_fft - Activates fft based ocean algorithm. Produces realistic wave undulation for the best quality and most realistic water. Everything is the same with water except undulation. This algorithm was used in movies like Titanic and Waterworld so it's very realistic. Screenshots wouldn't really show the difference but I have a short movie, it hardly does it justice, but atleast you can see the wave difference.
FFA Water movie comparison 4MB
TEXTURES & LOD:
Distant LOD (level of detail) of textures and vegetation is probably my favorite section because it’s most noticeable as you look across the map and walk about.
e_detail_materials_view_dist_xy - Max view distance of terrain XY materials. This is things like certain cliffs and other materials horizontal LOD in game.
e_detail_materials_view_dist_z - Max view distance of terrain Z material. This is things like certain cliffs and other materials vertical LOD in game. This one doesn't need to be raised high, 256 or 512 max. (In the GPU benchmark when coming in from the sky this setting will show itself on vertical LOD).
A picture is worth a thousand words on how these two work...
Note: For the mountains to appear crisp like this you will also need r_TexturesStreaming set to 0.
r_usepom - Enables Parallax Occlusion Mapping. A type of relief map that gives raised appearance to textures. Very cool but costs about 2 fps and can sometimes cause a fairly insignificant minor blurring of terrain textures in distance. Comparisons...
VEGETATION & SPRITES:
e_cull_veg_activation - Vegetation activation distance limit, 70 is a good step up from high(50). This is trees setting how far the farthest out can be seen.
e_vegetation_sprites_distance_ratio - Allows changing distance on what vegetation switch into sprite. Raising this from 1 to 1.5 cost me about 1 fps in that view. Adds medium tree distance as well as certain near shrubs. Comparisons...
e_view_dist_ratio_vegetation - View distance ratio for vegetation. Includes grass and shrubs like ferns and broad leafs, etc. 50 just about eliminates any popping effect with grass and shrubs, costs 1 fps in this scene. Comparisons...
Controlling Antialiasing with Tweaks
See above section on antialiasing and how it changes shader settings. These are the cvar settings for AA that you can use in your autoexec.cfg file. Only for XP.
r_FSAA = 1 - turns on AA
2xAA = r_FSAA_samples = 2, r_FSAA_quality = 0
4xAA = r_FSAA_samples = 4, r_FSAA_quality = 0
8xAA = r_FSAA_samples = 4, r_FSAA_quality = 2
8xAAQ = r_FSAA_samples = 8, r_FSAA_quality = 0
16xAA = r_FSAA_samples = 4, r_FSAA_quality = 4
16xAAQ = r_FSAA_samples = 8, r_FSAA_quality = 2
Know your in game settings. Play with that first to get a comfortable feel of what you like and what is available through the advanced settings menu options. The way the autoexec.cfg variables work is they build on the in-game settings. The in game settings are first loaded, which are stored in the game.cfg in your profile. As the game starts it loads the game.cfg then the autoexec.cfg overrides are loaded with what ever settings you chose. So for instance, you have in game shaders set to medium down from high. But medium changes over 20 settings, well maybe you want the perfomance benefit of most of those but you want Ambient Occlusion back on the terrain (it's a global lighting system to provide realistic lighting). You keep the in game setting at medium but turn on e_terrain_ao = 1 along with r_SSAO=1 which will override the 0 settings in the game. Or maybe you want better better shaders on terrain back to high(3) so q_ShaderTerrain = 3. Whether you like water, sky, terrain, vegetation, view distances....it's all at your finger tips for your preferences. Usually there is only a couple settings that really affect performance alot, the rest can add quality at little cost, the developers just didn't know your video memory, vid card, processor, ram, etc. so they made broader stroke settings than most people needed in certain cases. The tip to remember is that your configs will override and work on top of what is already set in the game menu last time you ran the game. If you prefer there is also way to change the drop down boxes from your autoexec. The sys_spec... settings will change low/medium/high and it will change all the broad stroke settings I color coded in my chart if you change those broad stoke settings. You will know when your autoexec is working because if you look at the game settings it will show custom instead of low/medium/high.
Basically, many cvar values are often just a on/off setting for features [0/1] 0 is off, 1 is on. Others may have values that are based on different ranges, the definitions will tell you what most of the limits and ranges are. Some ranges maybe in meters, where others are clearly larger or smaller units of measure. If you see a pattern of numbers like 512/1024 then extrapolate that it's best to stick with the pattern, like those just mentioned for texture sizes and shadow maps. Sometimes you have ratios (as seen in some cvar names), which seem to affect more than one thing and they are likely multiplied internally in the game against some value so they are more broad sweeping. I expose some of the cool cvars with pics above but don't let that keep you from trying new things.
Performance of these settings depends on your resolution, your video card, and the complexity of the scene you are looking at. If you are tweaking vegetation find the densist vegetation to see what the hugest impact will be. Same with terrain view distances and textures. In certain scenarios things combine where you are looking through the dense jungle up at the mountain this is good to test combined foliage/texture/view distance tweaks as it will show worst case scenarios. That is the balancing act, but most of the time you in buildings, in water, in vegetation, so you can pretty much raise them irrespective of each other to a degree. This is the point I am at in my configs in perfecting that balance of taking quality to the farthest point where it can mix well with the others. I also like long view distances on objects, I like seeing vehicles, enemies and buildings afar off so you can trade something else for that if you prefer.
It's great to use the console and see the settings changed in real time. Just be aware that not all settings can be changed in real time. Either the value will not change and that will be clearly shown in the console, or it appears to change the value in the console but nothing in the game actually changes. In those cases it will be necessary to put the setting in the autoexec.cfg so that the renderer will be able to properly utilize that setting during startup when rendering the scene. There are a couple features restricted to DX10 but mostly they are time of day and geometry shader functions (GS in the cvar), not many at all.
MAXIMUM TWEAKING FOR VISUAL FIDELITY
This covers just the basics of tweaking for visuals. I’ll cover some of what I learned on the relationship of LOD’s, view distances and ratios to help people understand what they do and how they work together. So here I give examples of what certain settings do and more importantly what they mean and how they work together. Some of these have been mentioned above but this just focus's on relationships of LOD, distances and ratios. If you go through this section and use it as a walk through and try some of these in your console that I mention to try, you will get a good understanding how tweaking fidelity in the game works. I cover most of the major settings although definitely not exhaustive. All tweaking begins on getting acceptable performance and quality with in game settings first.
The following settings properly tweaked can give you something like this compared to DX10 very high...
...Or how about tweaked XP vs All High in-game settings on DX9.
1900x1200 is just to show a comparison not necessarily playable. At 1280x1024 it's 25 fps and 25% faster than DX10 very high on an 8800GTS 640.
LOD
Level of detail. Providing levels of detail is very important for performance. It transitions the quality of textures, objects and trees to lower quality the farther into the distance that they are. To render things in the distance at full quality, when you don’t even have the pixels on your monitor in a square few millimeters to actually properly show it on screen, would be very wasteful. Why render a barrel at full quality with textures a kilometer away if it will only be two pixels high on your monitor. To do that would affect performance seriously without any benefit. Crysis implements Lod’s very well, not the distance per se which can benefit from some tweaking, but the quality of lower level LOD’s looks quite acceptable at a distance. So they are definitely good to use. Certain objects have a preset amount of LOD’s, like shadow maps have 5 LOD’s. So for a given LOD view distance of say 100 meters, it would transition to the next LOD every 20 meters.
e_lods – This setting tells the game to use LOD’s, it’s the master setting to enable or disable them for objects. If you set it to 0 in the console you will see an example of full detail on 3d objects in your current view distance (stones, textures, buildings, terrain). So if you had a view distance (next section) set to see barrels a mile away, setting this to 0 would render them at full quality (very wasteful). It’s a good exercise to see the effects of LOD and to disable this to 0, but we definitely want to use LOD, so this should be left to 1 for your gaming time.
e_lod_min - Min LOD for objects. You will come across settings of min and max on various settings so I use this as an example. This particular min setting is of objects, mostly certain large rocks, certain cliffs and trees a bit (not the small/medium rocks on the beaches). This setting is set to 0 by default. Think of 0 as closest to you and 0 being best quality. This setting works in concert with max.
e_lod_max – Max LOD for objects. Max sets the outer amount of LOD transitions, in this case mostly the quality of rocks in the ocean and certain rock cliffs as objects. It’s set to 6 by default. So what these settings do together is take a specified length of view distance, and divide it up into 7 LOD transitions, 0 being best, 6 being lowest quality. So as an example if you could see a rock popping out of the ocean at 70 meters max view distance, every ten meters you get closer to it then it will transition to a better LOD. As I understand it, these settings work along with a culling view distance. So if you changed the max from 6 to 4 then there would only be 5 transitions instead of 7 for the given distance, with the last two lowest quality not used. As I mentioned the quality of the LOD’s is real good, especially on objects so not rendering every brick on a building at half a mile is a good thing. Not sure much needs to be done with this setting particularly but that is how min/max works with LOD’s.
VIEW DISTANCE –
This is how far you can see something (profound). Sometimes this may be a value in meters or in some other world units. A couple examples…
e_detail_materials_view_dist_xy – This determines how far you will see materials in the distance like mountain tops and certain rocky cliffs. I prefer 4096 or even 8192 to see the distant mountains. Reducing this to 0 shows exactly what it effects.
e_cull_veg_activation – View limit on where procedural trees are culled. (70 is a good step up)
r_detaildistance – works with with view distance on showing r_detailnumlayers.
RATIOS –
Ratios are great. They serve as a multiplier for many settings simultaneously. The beauty is with ratios that the way things cull into the distance is already done for you pretty well. In other words, you won’t see bushes a 100 meters ahead, but trees at only 50. Everything is pretty well balanced for you. So changing the multiplier(ratio) changes everything under the control of that ratio by a factor. In most cases, ratios are the settings to focus on.
e_view_dist_ratio – Setting this to 0 removes all the objects that this setting controls, so it immediately shows you which objects this controls exactly. It controls view distance on rocks in the ocean and every human object(buildings, boxes, barrels, docks, everything showing a remnant a human exists in the world (except vehicles).
e_view_dist_ratio_vegetation – This setting is great, it’s one of my favorite. Also try setting this to 0, as it will show you exactly what it affects. You will see a barren wasteland at 0 but this barren wasteland is also a great tip in working on seeing your terrain tweaks later on (next section). This ratio serves as a distance multiplier for all vegetation and includes small/medium sized rocks on the beach. The other objects like big rocks in water, some cliff faces and all human objects are unaffected, they are controlled by the previous setting. So between the above two settings we cover everything in the world except terrain, textures, vehicles and players.
e_lod_ratio – The ratio of LOD distance transitions. This affects the distance of LOD transitions on the objects that e_view_dist_ratio actually controls(rocks in the ocean and every human object). It is a ratio so it will work as a multiplier on many objects making certain human objects look better at short/medium distances. 6 is default and is ok, but 10 is better and only effects fps by a meager few percent from 6 to 10. The more objects in view, the more effect this will have. LOD any higher on far distant objects which cannot be properly seen would just take away performance. 6 or 8 may be sufficient for many people because as mentioned LOD’s are pretty good so go ahead and see what you think.
Terrain and Textures -
This has to do with terrain on beaches, mountain sides, etc. Also textures on rocks and other objects in the world. It is suggested you remove vegetation when trying to see what this effects below. e_view_dist_ratio and …_vegetation to 0 will give you excellent view of terrain textures.
e_terrain_lod_ratio – This is set to 1 by default. If you want to see full LOD of the type of terrain this affects try 0 (prepare for triangles/sec x 5). On the other hand try 50 for the low LOD. Disabling ‘e_view_dist_ratio’ and ‘_vegetation’ will really help to see what this does by removing all vegetation and objects. 1 is actually pretty good, you can get away with .8 but in all fairness 1 looks pretty good. Raise this to 1.5 - 2 to get more fill rate performance.
e_terrain_texture_lod_ratio - Terrain texture LOD. Considering that it's covered by vegetation and anything in the far distance is only a few pixels anyway, this doesn't make sense to go any lower than .7. Remove all vegetation first to see it’s real visual effects. Setting it to 0 shows full LOD. Raise it above 1 for more performance.
e_view_dist_custom_ratio - View distance ratio for special marked objects (Players, enemies, Vehicles). It does not work at runtime in console, requires level restart.
r_TexturesStreaming - Setting this to 0 had a profound effect on some textures in the game, especially mountains. Apparently this disables streaming which will rely more on your video card memory. Also this setting should be at the end of a config file because it can be turned on automatically by other settings being adjusted.
r_TexAtlasSize – is simply a way textures are combined together. 2048 is preferred for high end.
Sprites & vegetation –
Sprites have been around for ever. They are basically 2D objects in the distance that transition into low LOD 3d objects as you get closer to them.
e_vegetation_sprites_distance_ratio – Turning this to 0 turns everything into a sprite. Since this is a ratio it turns everything into 3d at different distances. 1.7 is decent but this setting has a lot of effect on performance.
e_vegetation_sprites_distance_custom_ratio_min – 1 is a good default. 2 shows a lot more 3d objects, but at their poor LOD in the distance, sprites are probably preferred. We don’t have the power to render more trees at higher ranges and LOD’s so 1 is good. This is just here as an example of distance ratios.
r_VegetationSpritesTexRes – This determines the resolution of the sprites. Setting this from 64 to 128 increases sprites quality in the distance. To prevent sprites popping, I suggest raising the sprites buffer to r_DynTexAtlasSpritesMaxSize = 32 with it.
Basic computer performance:
I don't want to recreate the wheel but their are many things to do to increase performance in games with your computer. Details on how to do these things can be found by doing a google search for any of the following.
* Latest drivers for your video card, motherboard, sound card can improve things greatly at times.
* Defrag your hard drive. It's prefferable to defrag 'before' installing so that the files stay close together and contiguous.
* If you only have 512MB or 1GB memory, 2GB is highly recommended.
* Go into your driver control panel to make sure antialiasing(AA) or anisotropic filtering(AF) is not enabled unless you want them to be, they effect performance alot. Also you can change texture filtering quality to provide more performance in the drivers.
* If you are running Vista make sure to be using the current hotfixes, some effect performance and memory usage tremendously. Nvidia has a great list of recommended ones here: Vista hotfixes
* A video card like an 8800 GT for $250 will provide tremendous results if you haven't upgraded in a long time.
* Disabling any unneeded running process, especially antivirus, while playing is recommended.
Resolution:
Resolution has a large impact because the game has so much geometry that the fillrate demands of large resolutions is beyond what people are used to. If you can lower resolution this will help gain many fps and provide smoother play. If you have an LCD you need to use what is called 1:1 pixel mapping, or otherwise known as disabling scaling. This allows the image to shrink but the quality of the image stays incredibly good. Scaling on the other hand, always looks bad if using anything other than your native resolution. Scaling can be disabled on some monitors. If your monitor doesn't support this feature some drivers support it. With nvidia you can disable it like so, CLICK HERE. So shrinking the image while maintaining incredible quality works well for performance, you can always slide your monitor closer you then won't notice the image is smaller.
Custom resolutions can be used by using 'r_width=x' and 'r_height=x'. See below on advanced tweaking on how to use variables.
In-Game Settings:
The settings that have the biggest effect on performance are firstly shaders. This game is one of the most shader intensive games on the market. Going from high to medium shader settings works real well in giving an average of anywhere from 7-10 fps or more, depending on some variables. Next are Shadows and Post Processing. Shadows from high to medium looks very good still and provide a good boost of performance. Post processing has a big effect as well. The thing that people notice most about post processing is motion blur and depth of field. These can be easily turned on/off individually if desired seperate from the post process drop down box, as will be seen in the advanced tweaking section. Textures setting affects video memory usage quite a bit which we will look at next.
Video Memory:
Using beyond the amount of memory that is locally on the video card will produce performance problems like stuttering and hitching due to having to fetch data from system RAM over the much higher latency PCI express bus. In other words, adjust settings/resolution in the game not to exceed your video RAM, otherwise you will experience overall performance issues and the periodic flickering of geometry and LOD's as it streams in. The game is very video memory intensive. Resolution and AA effect the amount of video memory the game uses tremendously. Here is a breakdown of video memory across different settings and resolutions.
* Windows XP
* Nvidia Driver 169.01
1280x1024 medium
* NoAA 184MB
* 2xAA 295MB
* 4xAA 355MB
* 8xAA 395MB
1280x1024 high
* NoAA 315MB
* 2xAA 375MB
* 4xAA 440MB
* 8xAA 470MB
-Texture medium-
* NoAA 300MB
* 2xAA 363MB
* 4xAA 423MB
* 8xAA 445MB
1680x1050 medium
* NoAA 223MB
* 2xAA 375MB
* 4xAA 455MB
1680x1050 high
* NoAA 368MB
* 2xAA 456MB
* 4xAA 535MB
-Texture medium-
* NoAA 340MB
* 2xAA 428MB
* 4xAA 505MB
1920x1200 Medium
* NoAA 240MB
* 2xAA 430MB
* 4xAA 535MB
1920x1200 High
* NoAA 400MB
* 2xAA 515MB
* 4xAA 615MB
-Texture Medium-
* NoAA 370MB
* 2xAA 475MB
* 4xAA 585MB
AA clearly makes a large impact in video memory. Different game levels may change these numbers. Changing textures from medium to low makes no appreciable difference since it is still using the lowspec pak. The devs have made huge advances in optimizing this area since earlier builds of the game, either that or the textures are quite lower in quality, infact these are the numbers medium textures used to give as if high textures are missing. Final shipping game may reflect differences here, will update accordingly. The textures setting alone no longer makes the difference it did in earlier builds regardless of high/medium/low setting, which again seems to give some indication higher textures have been removed temporarily or entirely.
Breakdown by video card memory:
256MB Video - 1680x1050 medium without AA or 1280x1024 medium with AA.
8800 GTS 320MB - Handles up 1680x1050 medium no aa, can go to high with some thrashing. Only AA at 1280x1024 looks to be viable with that memory limit.
512MB Video - Comes into it's first wall at 1680x1050 4xAA on high. Performance and not memory will impact you here.
8800 GTS 640MB - Handles up to 1920x1200 4x AA (All High). performance makes that out of reach on todays HW.
768MB and above - Memory will not be your limiting factor unless going to 2560x1600 with AA. Your GPU handling the raw processing of the geometry and shaders at that high resolution will be out of reach. I don't doubt that 1GB can be reached by tweaking Crysis and high resolutions with max AA on tomorrows HW. I already have found ways to approach 650MB at only 1280x1024.
Basic video memory tips:
* Find your video memory ceiling with resolution and texture setting first. Then adjust other parts of the game that are affecting raw performance like shaders or shadows until you get your acceptable performance. If you don't properly anticipate video memory usage, you won't realize why it is hitching on you, regardless of other settings.
* You don't have to turn everything to medium to conserve memory, textures have the biggest effect by far.
* Remember as more players enter the map this memory will climb a bit, as well as larger out door levels. Also as you stay in the game for a while this number will rise a little. I cached all the outdoors, but not the indoors.
* Adding any tweaks for higher quality, especially along the lines of LOD or view distance, has the potential to raise memory usage even further.
* The higher you go over your limit, the worse performance, texture stuttering, hitching and popping of geometry will become.
* If your resolution doesn't appear just use something close, like 1680x1050 is close to 1600x1200.
Benchmarking:
Crysis came with two benchmarks to test and compare your performance. A GPU benchmark and a CPU benchmark stressing physics. They can be found in the Bin32 or Bin64 folders. Just double click on them to start. The game will run through 4 loops of the benchmark. When it's done it will show you the results, I suggest you ignore the first one since it was just caching the level and assets on the first run. You can make your own benchmarks but for now these two work well as standard tests. See the benchmarking tool mentioned in post 3 for an improved benchmarking experience.
Antialiasing and Anisotropic filtering in Crysis
First of all AA is a serious performance drain. More so than other games because of the incredible amount of triangles and polys in the scene. AA is only recommended for the highest end GPU's and keep in mind high resolutions will be more intensive. So if you choose to use it then keep in mind the video memory that will be used (shown above). There is some interesting information starting to come out about AA. Apparently it is preferred to use the in-game AA settings as the proper way to use AA. In other words, don't use the driver control panel but control it from in game.
Additionally, HardOCP in their recent 8800GT review had this quote. "This comes directly from NVIDIA’s James Wang on the use of Transparency Antialiasing in Crysis: ” Crysis handles foliage very differently from normal engines so TRMS/SS won't work. Bit of a shame really. The game has some built-in foliage AA, but it only kicks in in "Very high" quality mode.”"
I am actually pretty sure it can be enabled at high as well, not just very high. High and very high shader settings are compatible with in game AA, while low and medium shaders are not. Regardless of in game shader settings if AA is enabled, High shaders will also need to be enabled. If AA is currently enabled, but shaders is set to medium or low, AA will automatically be disabled by the game. So it will take a good medium to high end card to use AA not only because AA is demanding on it's own but because you will need to run atleast high shaders as well.
As to Anisotropic Filtering, it can only be enabled in the driver settings. Unfortunately there is a bug with the nvidia drivers that makes a white halo around distant bushes and trees. I believe this bug only shows itself on a particular. This apparently will be fixed with a future driver.
Vsync
Vsynch can be enabled in the game with r_vsync = 1. It is off by default.
ADVANCED TWEAKING
Customizing the game:
The in-game settings are like using a paint roller on a canvas, while tweaking is like the fine brush of the artist. The roller gets the job done but it's not going to be as fulfilling as it could be. You need a fine brush to make it the way you like. The developers didn't want to burden you with 20 choices of drop down boxes so they instead made those broad strokes for you. Unfortunately the difference in performance and quality between low/medium/high/veryhigh can be staggering. Sometimes a move from high to medium can change 20 variables, but it may not be necessary to change all 20 when only a few really effect performance or quality. The fine strokes will allow you to get exactly what you want and Crytek has really given us the ability to change just about everything in the game you would want. You do not have to sacrifice as much quality for performance as you may think. Sometimes you can keep settings high or medium and change one variable that is the big performance tanker or one setting that brings back some good quality at little cost. Enough intro lets get busy.
How to make an autoexec.cfg
In the early days of the beta people modified the cvar groups game files because it was the best they knew, if you have heard about this I do not recommend it. It changes the way your in-game settings work permanently and changing to medium or high won't have the desired effect anymore. We later learned that you can make an autoexec.cfg file in the "Crysis SP Demo" folder. Tweaks are made up of Console Variables (cvars for short), a list of the ones currently used by the game can be seen below. In this file you put in the tweaks you want one by one and the game will use them when it starts up.
View Performance In Game
Place the line r_displayinfo=1 in your autoexec.cfg. This will show you fps, system memory usage(not video), triangle count, etc. Also you can use fraps if you wish to show fps as well as take screenshots and make movies of the game.
Enable The Console:
By default the devs have disabled the console unless you learn the trick to enable it. You can enable it by adding the line con_restricted=0 to your autoexec.cfg and you can then use tweaks while in game in real time and watch with your own eyes the quality and performance changes. Pull down the console while in game by hitting the ~ (tilde) key. From there you can type in a cvar, without a value, and the game will tell you the current value. If you want to test a tweak, just type it in but instead of using an equals sign to put in a value like in the autoexec.cfg, just use a space. Example in console: r_displayinfo 1
If you have the fps shown in game you will see the performance effect of different settings.
Enhancing on DX9:
It is a very tweakable game. Crytek have given us the ability to tweak many many things to reach Very High equivalent settings and even far far beyond. I will give you a break down of every exact Very High setting(used in DX10) for reference. This is the real list of every setting and their values. So you can use this list and mimic exactly very high in DX9 to the fullest extent possible. Just add this list to an autoexec.cfg and you will have very high for DX9.
sys_spec_GameEffects = 3
sys_spec_ObjectDetail = 3
sys_spec_Particles = 3
sys_spec_Physics = 3
sys_spec_PostProcessing = 3
sys_spec_Quality = 3
sys_spec_Shading = 3
sys_spec_Shadows = 3
sys_spec_Texture = 3
sys_spec_VolumetricEffects = 3
sys_spec_Water = 3
e_foliage_wind_activation_dist = 25
e_max_entity_lights = 16
e_obj_quality = 4
e_particles_max_emitter_draw_screen = 32
e_particles_quality = 4
e_shadows_cast_view_dist_ratio = 0.8
e_vegetation_sprites_distance_ratio = 1.5
e_view_dist_ratio_detail = 30
e_view_dist_ratio_vegetation = 45
e_water_ocean_fft = 1
e_water_tesselation_amount = 10
es_DebrisLifetimeScale = 1
g_battleDust_enable = 1
g_breakage_particles_limit = 250
g_ragdollDistance = 40
g_ragdollMinTime = 15
q_Renderer = 3
q_ShaderFX = 3
q_ShaderGeneral = 3
q_ShaderGlass = 3
q_ShaderHDR = 3
q_ShaderIce = 3
q_ShaderMetal = 3
q_ShaderPostProcess = 3
q_ShaderShadow = 3
q_ShaderSky = 3
q_ShaderTerrain = 3
q_ShaderVegetation = 3
q_ShaderWater = 3
r_BeamsDistFactor = .05
r_BeamsMaxSlices = 200
r_ColorGrading = 1
r_DepthOfField = 2
r_DetailNumLayers = 2
r_DynTexAtlasSpritesMaxSize = 32
r_MotionBlur = 4
r_ShadowJittering = 2.5
r_SSAO_quality = 2
r_SSAO_radius = 2
r_sunshafts = 1
r_TexAtlasSize = 2048
r_Usepom = 1
r_WaterReflectionsQuality = 3
r_WaterUpdateDistance = 0.2
In Game Settings:
This chart shows the breakdown of "every" console variable that is changed by the in-game settings. It color codes every different type of in game menu(textures, game quality, shadows,etc) and shows you what variables actually change, when you change a drop down menu in the game, and what values they change to. To see more console variables that cannot be changed in game and to see all the definitions of the settings, follow the links below the image.
How do I do start?: summary
You can start by making an autoexec.cfg in the main game folder. Add two settings to start.
Just copy/paste them.
r_displayinfo=1
con_restricted=0
Now you can open the console and start trying tweaks that look interesting one by one. Use your autoexec.cfg and fill it with the tweaks you like. When you check your in game settings it will show 'custom' if you have tweaks in your autoexec affecting that menu section. I will detail some of the ones I think are cool here next.
Quality Comparisons: Some notable settings that effect quality.
LIGHT AND WATER:
r_sunshafts = 1 turns on the hidden feature of light shafts that dance through trees and past objects. Available in game through Very High in-game setting.
The bottom is default all High in-game settings, the top is r_sunshafts = 1. Comparison pics...
The following 3 settings work along with sun shafts...
r_Beams - Toggles the volumetric light beams. Default is 3, it’s an optimized beam with glow support. 0 disables beams, 2 uses fake beams with probably beneficial performance (performance untested). 1 is the best and uses the real full resolution beams but it is slower.
r_BeamsDistFactor - Distance between slices. Default is 0.01 in meters(likely reserved for Ultra High) and is likely the best setting for beams making it through the densest vegetation. You can try it and see what you like best (currently medium and high use 0.5, low uses 1).
r_BeamsMaxSlices - Number of volumetric slices allowed per light beam. Default is 200 (reserved for very high specs). The max here is 300, so go ultra if you think you can really handle the performance hit.
e_water_ocean_fft - Activates fft based ocean algorithm. Produces realistic wave undulation for the best quality and most realistic water. Everything is the same with water except undulation. This algorithm was used in movies like Titanic and Waterworld so it's very realistic. Screenshots wouldn't really show the difference but I have a short movie, it hardly does it justice, but atleast you can see the wave difference.
FFA Water movie comparison 4MB
TEXTURES & LOD:
Distant LOD (level of detail) of textures and vegetation is probably my favorite section because it’s most noticeable as you look across the map and walk about.
e_detail_materials_view_dist_xy - Max view distance of terrain XY materials. This is things like certain cliffs and other materials horizontal LOD in game.
e_detail_materials_view_dist_z - Max view distance of terrain Z material. This is things like certain cliffs and other materials vertical LOD in game. This one doesn't need to be raised high, 256 or 512 max. (In the GPU benchmark when coming in from the sky this setting will show itself on vertical LOD).
A picture is worth a thousand words on how these two work...
Note: For the mountains to appear crisp like this you will also need r_TexturesStreaming set to 0.
r_usepom - Enables Parallax Occlusion Mapping. A type of relief map that gives raised appearance to textures. Very cool but costs about 2 fps and can sometimes cause a fairly insignificant minor blurring of terrain textures in distance. Comparisons...
VEGETATION & SPRITES:
e_cull_veg_activation - Vegetation activation distance limit, 70 is a good step up from high(50). This is trees setting how far the farthest out can be seen.
e_vegetation_sprites_distance_ratio - Allows changing distance on what vegetation switch into sprite. Raising this from 1 to 1.5 cost me about 1 fps in that view. Adds medium tree distance as well as certain near shrubs. Comparisons...
e_view_dist_ratio_vegetation - View distance ratio for vegetation. Includes grass and shrubs like ferns and broad leafs, etc. 50 just about eliminates any popping effect with grass and shrubs, costs 1 fps in this scene. Comparisons...
Controlling Antialiasing with Tweaks
See above section on antialiasing and how it changes shader settings. These are the cvar settings for AA that you can use in your autoexec.cfg file. Only for XP.
r_FSAA = 1 - turns on AA
2xAA = r_FSAA_samples = 2, r_FSAA_quality = 0
4xAA = r_FSAA_samples = 4, r_FSAA_quality = 0
8xAA = r_FSAA_samples = 4, r_FSAA_quality = 2
8xAAQ = r_FSAA_samples = 8, r_FSAA_quality = 0
16xAA = r_FSAA_samples = 4, r_FSAA_quality = 4
16xAAQ = r_FSAA_samples = 8, r_FSAA_quality = 2
Know your in game settings. Play with that first to get a comfortable feel of what you like and what is available through the advanced settings menu options. The way the autoexec.cfg variables work is they build on the in-game settings. The in game settings are first loaded, which are stored in the game.cfg in your profile. As the game starts it loads the game.cfg then the autoexec.cfg overrides are loaded with what ever settings you chose. So for instance, you have in game shaders set to medium down from high. But medium changes over 20 settings, well maybe you want the perfomance benefit of most of those but you want Ambient Occlusion back on the terrain (it's a global lighting system to provide realistic lighting). You keep the in game setting at medium but turn on e_terrain_ao = 1 along with r_SSAO=1 which will override the 0 settings in the game. Or maybe you want better better shaders on terrain back to high(3) so q_ShaderTerrain = 3. Whether you like water, sky, terrain, vegetation, view distances....it's all at your finger tips for your preferences. Usually there is only a couple settings that really affect performance alot, the rest can add quality at little cost, the developers just didn't know your video memory, vid card, processor, ram, etc. so they made broader stroke settings than most people needed in certain cases. The tip to remember is that your configs will override and work on top of what is already set in the game menu last time you ran the game. If you prefer there is also way to change the drop down boxes from your autoexec. The sys_spec... settings will change low/medium/high and it will change all the broad stroke settings I color coded in my chart if you change those broad stoke settings. You will know when your autoexec is working because if you look at the game settings it will show custom instead of low/medium/high.
Basically, many cvar values are often just a on/off setting for features [0/1] 0 is off, 1 is on. Others may have values that are based on different ranges, the definitions will tell you what most of the limits and ranges are. Some ranges maybe in meters, where others are clearly larger or smaller units of measure. If you see a pattern of numbers like 512/1024 then extrapolate that it's best to stick with the pattern, like those just mentioned for texture sizes and shadow maps. Sometimes you have ratios (as seen in some cvar names), which seem to affect more than one thing and they are likely multiplied internally in the game against some value so they are more broad sweeping. I expose some of the cool cvars with pics above but don't let that keep you from trying new things.
Performance of these settings depends on your resolution, your video card, and the complexity of the scene you are looking at. If you are tweaking vegetation find the densist vegetation to see what the hugest impact will be. Same with terrain view distances and textures. In certain scenarios things combine where you are looking through the dense jungle up at the mountain this is good to test combined foliage/texture/view distance tweaks as it will show worst case scenarios. That is the balancing act, but most of the time you in buildings, in water, in vegetation, so you can pretty much raise them irrespective of each other to a degree. This is the point I am at in my configs in perfecting that balance of taking quality to the farthest point where it can mix well with the others. I also like long view distances on objects, I like seeing vehicles, enemies and buildings afar off so you can trade something else for that if you prefer.
It's great to use the console and see the settings changed in real time. Just be aware that not all settings can be changed in real time. Either the value will not change and that will be clearly shown in the console, or it appears to change the value in the console but nothing in the game actually changes. In those cases it will be necessary to put the setting in the autoexec.cfg so that the renderer will be able to properly utilize that setting during startup when rendering the scene. There are a couple features restricted to DX10 but mostly they are time of day and geometry shader functions (GS in the cvar), not many at all.
MAXIMUM TWEAKING FOR VISUAL FIDELITY
This covers just the basics of tweaking for visuals. I’ll cover some of what I learned on the relationship of LOD’s, view distances and ratios to help people understand what they do and how they work together. So here I give examples of what certain settings do and more importantly what they mean and how they work together. Some of these have been mentioned above but this just focus's on relationships of LOD, distances and ratios. If you go through this section and use it as a walk through and try some of these in your console that I mention to try, you will get a good understanding how tweaking fidelity in the game works. I cover most of the major settings although definitely not exhaustive. All tweaking begins on getting acceptable performance and quality with in game settings first.
The following settings properly tweaked can give you something like this compared to DX10 very high...
...Or how about tweaked XP vs All High in-game settings on DX9.
1900x1200 is just to show a comparison not necessarily playable. At 1280x1024 it's 25 fps and 25% faster than DX10 very high on an 8800GTS 640.
LOD
Level of detail. Providing levels of detail is very important for performance. It transitions the quality of textures, objects and trees to lower quality the farther into the distance that they are. To render things in the distance at full quality, when you don’t even have the pixels on your monitor in a square few millimeters to actually properly show it on screen, would be very wasteful. Why render a barrel at full quality with textures a kilometer away if it will only be two pixels high on your monitor. To do that would affect performance seriously without any benefit. Crysis implements Lod’s very well, not the distance per se which can benefit from some tweaking, but the quality of lower level LOD’s looks quite acceptable at a distance. So they are definitely good to use. Certain objects have a preset amount of LOD’s, like shadow maps have 5 LOD’s. So for a given LOD view distance of say 100 meters, it would transition to the next LOD every 20 meters.
e_lods – This setting tells the game to use LOD’s, it’s the master setting to enable or disable them for objects. If you set it to 0 in the console you will see an example of full detail on 3d objects in your current view distance (stones, textures, buildings, terrain). So if you had a view distance (next section) set to see barrels a mile away, setting this to 0 would render them at full quality (very wasteful). It’s a good exercise to see the effects of LOD and to disable this to 0, but we definitely want to use LOD, so this should be left to 1 for your gaming time.
e_lod_min - Min LOD for objects. You will come across settings of min and max on various settings so I use this as an example. This particular min setting is of objects, mostly certain large rocks, certain cliffs and trees a bit (not the small/medium rocks on the beaches). This setting is set to 0 by default. Think of 0 as closest to you and 0 being best quality. This setting works in concert with max.
e_lod_max – Max LOD for objects. Max sets the outer amount of LOD transitions, in this case mostly the quality of rocks in the ocean and certain rock cliffs as objects. It’s set to 6 by default. So what these settings do together is take a specified length of view distance, and divide it up into 7 LOD transitions, 0 being best, 6 being lowest quality. So as an example if you could see a rock popping out of the ocean at 70 meters max view distance, every ten meters you get closer to it then it will transition to a better LOD. As I understand it, these settings work along with a culling view distance. So if you changed the max from 6 to 4 then there would only be 5 transitions instead of 7 for the given distance, with the last two lowest quality not used. As I mentioned the quality of the LOD’s is real good, especially on objects so not rendering every brick on a building at half a mile is a good thing. Not sure much needs to be done with this setting particularly but that is how min/max works with LOD’s.
VIEW DISTANCE –
This is how far you can see something (profound). Sometimes this may be a value in meters or in some other world units. A couple examples…
e_detail_materials_view_dist_xy – This determines how far you will see materials in the distance like mountain tops and certain rocky cliffs. I prefer 4096 or even 8192 to see the distant mountains. Reducing this to 0 shows exactly what it effects.
e_cull_veg_activation – View limit on where procedural trees are culled. (70 is a good step up)
r_detaildistance – works with with view distance on showing r_detailnumlayers.
RATIOS –
Ratios are great. They serve as a multiplier for many settings simultaneously. The beauty is with ratios that the way things cull into the distance is already done for you pretty well. In other words, you won’t see bushes a 100 meters ahead, but trees at only 50. Everything is pretty well balanced for you. So changing the multiplier(ratio) changes everything under the control of that ratio by a factor. In most cases, ratios are the settings to focus on.
e_view_dist_ratio – Setting this to 0 removes all the objects that this setting controls, so it immediately shows you which objects this controls exactly. It controls view distance on rocks in the ocean and every human object(buildings, boxes, barrels, docks, everything showing a remnant a human exists in the world (except vehicles).
e_view_dist_ratio_vegetation – This setting is great, it’s one of my favorite. Also try setting this to 0, as it will show you exactly what it affects. You will see a barren wasteland at 0 but this barren wasteland is also a great tip in working on seeing your terrain tweaks later on (next section). This ratio serves as a distance multiplier for all vegetation and includes small/medium sized rocks on the beach. The other objects like big rocks in water, some cliff faces and all human objects are unaffected, they are controlled by the previous setting. So between the above two settings we cover everything in the world except terrain, textures, vehicles and players.
e_lod_ratio – The ratio of LOD distance transitions. This affects the distance of LOD transitions on the objects that e_view_dist_ratio actually controls(rocks in the ocean and every human object). It is a ratio so it will work as a multiplier on many objects making certain human objects look better at short/medium distances. 6 is default and is ok, but 10 is better and only effects fps by a meager few percent from 6 to 10. The more objects in view, the more effect this will have. LOD any higher on far distant objects which cannot be properly seen would just take away performance. 6 or 8 may be sufficient for many people because as mentioned LOD’s are pretty good so go ahead and see what you think.
Terrain and Textures -
This has to do with terrain on beaches, mountain sides, etc. Also textures on rocks and other objects in the world. It is suggested you remove vegetation when trying to see what this effects below. e_view_dist_ratio and …_vegetation to 0 will give you excellent view of terrain textures.
e_terrain_lod_ratio – This is set to 1 by default. If you want to see full LOD of the type of terrain this affects try 0 (prepare for triangles/sec x 5). On the other hand try 50 for the low LOD. Disabling ‘e_view_dist_ratio’ and ‘_vegetation’ will really help to see what this does by removing all vegetation and objects. 1 is actually pretty good, you can get away with .8 but in all fairness 1 looks pretty good. Raise this to 1.5 - 2 to get more fill rate performance.
e_terrain_texture_lod_ratio - Terrain texture LOD. Considering that it's covered by vegetation and anything in the far distance is only a few pixels anyway, this doesn't make sense to go any lower than .7. Remove all vegetation first to see it’s real visual effects. Setting it to 0 shows full LOD. Raise it above 1 for more performance.
e_view_dist_custom_ratio - View distance ratio for special marked objects (Players, enemies, Vehicles). It does not work at runtime in console, requires level restart.
r_TexturesStreaming - Setting this to 0 had a profound effect on some textures in the game, especially mountains. Apparently this disables streaming which will rely more on your video card memory. Also this setting should be at the end of a config file because it can be turned on automatically by other settings being adjusted.
r_TexAtlasSize – is simply a way textures are combined together. 2048 is preferred for high end.
Sprites & vegetation –
Sprites have been around for ever. They are basically 2D objects in the distance that transition into low LOD 3d objects as you get closer to them.
e_vegetation_sprites_distance_ratio – Turning this to 0 turns everything into a sprite. Since this is a ratio it turns everything into 3d at different distances. 1.7 is decent but this setting has a lot of effect on performance.
e_vegetation_sprites_distance_custom_ratio_min – 1 is a good default. 2 shows a lot more 3d objects, but at their poor LOD in the distance, sprites are probably preferred. We don’t have the power to render more trees at higher ranges and LOD’s so 1 is good. This is just here as an example of distance ratios.
r_VegetationSpritesTexRes – This determines the resolution of the sprites. Setting this from 64 to 128 increases sprites quality in the distance. To prevent sprites popping, I suggest raising the sprites buffer to r_DynTexAtlasSpritesMaxSize = 32 with it.
Last edited: