Last updated at 1:06, 16 Sep 2012 Uploaded at 22:58, 24 Nov 2011
SKYRIM ENTHUSIAST GRAPHICS - TWEAK GUIDE
This tutorial will guide you step by step, giving a complete description of the Skyrim configuration files (Skyrim.ini and SkyrimPrefs.ini) and how to edit them for the best possible graphics on modern PC hardware. I would like to thank the community for their input and encourage everybody to leave feedback/suggestions and share any screenshots from their modified game =)
All of these improvements require editing config files located in "My Documents\My Games\Skyrim" or to be exact "C:\Users\[username]\Documents\My Games\Skyrim\"
NOTE: Sorry, I am no longer offering support for this guide.
================================ Increase Available Memory ================================
We have to adjust the maximum amount of memory available to the game. This can be done by including iMaxAllocatedMemoryBytes in Skyrim.ini under [Papyrus]:
The value is in bytes (Gigabytes x 1024 x 1024 x 1024). After alot of feedback it appears being more conservative with this amount provides better results. Because Skyrim is a 32-bit application it cannot address more than 4GB, so there is no benefit going higher than 4294967295.
fMasterFilePreLoadMB and iPreloadSizeLimit control the amount of RAM available for preloading. Going by past Bethesda games (Fallout 3, Oblivion) I will assume this determines a size limitation for the Cell Buffer (described later in "Draw Distance"). The value is in bytes (Megabytes x 1024 x 1024) and 268435456 (256mb) offers good stability for anyone with 4GB RAM or more.. 536870912 (512mb) works on my PC with 6GB RAM but I have not observed any performance benefit. Copy the following values into Skyrim.ini under [General]:
================================ Draw Distance ================================
This has the biggest impact on both graphics and performance and is only recommended for powerful computers. uGridsToLoad controls how much of the game world is loaded, increasing this will make the distant areas in the game look much better. The game accepts odd values (5, 7, 9, 11, 13) with 5 being the default and 13 the highest value I have achieved during testing.
NOTE: Once you increase the value of uGridsToLoad any NEW saves will fail to load if you revert back to a LOWER value. THERE IS A SOLUTION TO THIS. See FAQ for a solution to this problem. Copy the following values into Skyrim.ini under [General]:
uInterior Cell Buffer=50
uExterior Cell Buffer=100
uInterior Cell Buffer and uExterior Cell Buffer control how much of the game world is buffered into memory, this needs to increase proportionally with uGridsToLoad. Stuttering can occur if the game attempts to fetch information from the hard disk and increasing these values will solve that problem by preloading a larger area of the world into RAM. uExterior Cell Buffer should be ATLEAST (uGridsToLoad + 1) * 2 but you can be more generous, some people have had better results by increasing this amount. uInterior Cell Buffer should be half uExterior Cell Buffer.
uExterior Cell Buffer=64
uInterior Cell Buffer=32
The following screenshots are a guide to show how the game looks at different settings:
uGridsToLoad=7 [Most Stable]
uGridsToLoad=9 [My Preference]
uGridsToLoad=13 [Very Unstable]
Experiment with different values to see what performance you get. If the game crashes or keeps loading forever then try increasing the uExterior Cell Buffer or lowering uGridsToLoad, most people report 7 as the most stable value.
uGridsToLoad In Depth:
Beyond the loaded grids is just a sort of "skybox" area, containing no actors or objects, it is just a simple textured height map with some basic trees and fog, you cannot interact with it, nothing can be moved from the world into the skybox and vice versa. As you increase the value of uGridsToLoad you increase the entire game world itself, infact increasing many of the LOD distances in SkyrimPrefs.ini will have no effect unless you increase uGridsToLoad first, remember you cannot push detail out of the world and into the skybox.
I need to emphasize the impact uGridsToLoad can have on performance. Skyrim has very little support for multi-threading and most people will encounter a CPU bottleneck, you can prove this by making drastic changes to the resolution and MSAA and observing almost no difference in FPS. I have recently discovered that Skyrim actually uses the CPU for shadows instead of the GPU, so this could be responsible for alot of the performance issues people are having, you can read about improving shadow performance in the Shadows section of this guide. Personally I think scaling back shadows to gain an increase in uGridsToLoad is definitely a worthwhile trade off.
You can also increase the detail for extreme distances by replacing the following values located in SkyrimPrefs.ini under [TerrainManager]:
fBlockLevel1Distance=75000.0000, fBlockLevel0Distance=35000.0000 [Skyrim at Ultra Settings]
fBlockLevel1Distance=140000.0000, fBlockLevel0Distance=70000.0000 [Enthusiast]
================================ Grass and Trees ================================
The draw distance of grass can be increased significantly by altering the value of fGrassStartFadeDistance, in my testing 14000 is the highest value beyond which there is no benefit. Replace the following values located in SkyrimPrefs.ini under [Grass]:
fGrassStartFadeDistance=7000 [Skyrim at Ultra Settings]
I have experimented with alot of different values for uiMaxSkinnedTreesToRender and going too high seems to reduce performance with no obvious benefit, 24 is a good value. Replace the following values located in SkyrimPrefs.ini under [Display]:
================================ Shadows ================================
This enables Self Shadowing, trees and rocks will cast shadows on themselves and overall it gives more depth to the scene. Replace the following values located in SkyrimPrefs.ini under [Display]:
Self Shadow Disabled [bTreesReceiveShadows=0]
Self Shadow Enabled [bTreesReceiveShadows=1]
In Skyrim, shadow quality scales with shadow draw distance, unfortunately you cannot adjust these two properties independently. The variable fShadowDistance controls how far shadows are drawn, INCREASING this value will increase the draw distance of shadows but reduce their quality, DECREASING the value will reduce the draw distance of shadows but increase their quality.
Large draw distances will have a severe impact on performance and serve only to make shadows look blocky and unsightly, for this reason I recommend reducing fShadowDistance for an increase in both quality and performance. It is unfortunate we have to deal with this trade off, hopefully a patch is released to address this huge flaw in the game engine. The following values are located in SkyrimPrefs.ini under [Display]:
The softness of shadows can also be increased by altering iBlurDeferredShadowMask. This filter simply blurs the shadows and has negligible affect on performance, 3 or 4 are both good values but high amounts will introduce strange effects:
================================ Level Of Detail ================================
In skyrim the LOD (Level Of Detail) is reduced for more distant trees, they appear sparser and more simple. Although it is a subtle effect, the quality of distant trees can be increased by replacing the following values located in SkyrimPrefs.ini under [Display]:
The LOD for other distant objects can also be increased:
The following variables control how many objects, items and actors can be displayed on screen at once. Personally I don't see any point going higher than 16 for any of these values, you can try altering them in SkyrimPrefs.ini under [LOD]:
================ ================ ================ ================ ================
This is my attempt to better explain SOME of the other values in SkyrimPrefs.ini that havent been mentioned in the rest of the tutorial.
iMaxAnisotropy=8 //Anisotropic texture filtering, 16 is maximum
fLeafAnimDampenDistEnd=12000.0000 //Distance to stop rendering falling leaves
fLeafAnimDampenDistStart=8000.0000 //Distance to start fading out falling leaves
fGamma=1.0000 //Gamma (brightness, sort of..)
fDecalLOD2=2000.0000 //Max distance to render simple decals
fDecalLOD1=1000.0000 //Max distance to render full decals
//Max shadows cast by actors (human, animal) at one time
iWaterMultiSamples=2 //Multisample anti-aliasing, edge smoothing for water (2, 4, 8)
iMultiSample=4 //Multisample anti-aliasing, edge smoothing for objects (2, 4, 8)
iMaxSkinDecalsPerFrame=32 //Max SKIN decals possible on screen
iMaxDecalsPerFrame=128 //Max decals possible on screen
//Unsure if these 4 actually work..
bDynamicWindowReflections=1 //Window reflections are real time
bShadowsOnGrass=1 //Shadows are cast onto grass
bActorSelfShadowing=1 //Actors cast shadows on themselves
bMouseAcceleration=0 //Toggle Mouse Acceleration (1=On, 2=Off)
iMaxDesired=768 //How much dust, magic etc particles at once
uMaxDecals=1024 //Max decals possible at once
bDecals=1 //Toggle decals (1=On, 2=Off)
bSkinnedDecals=1 //Toggle SKIN decals (1=On, 2=Off)
uMaxSkinDecals=128 //Max SKIN decals possible at once
uMaxSkinDecalsPerActor=32 //Max SKIN decals possible PER ACTOR (human, animal etc)
fLODFadeOutMultSkyCell=1.0000 //Setting this to 0.0000 turns off the fog on mountains
iWaterReflectHeight=1024 //Vertical resolution of water (you can try 2048)
iWaterReflectWidth=1024 //Horizontal resolution of water (must be same as height)
================ ================ ================ ================ ================
I have included my own .ini files containing all the changes listed above for anyone who wants them.
1. Locate Skyrim.ini and SkyrimPrefs.ini in "C:\Users\[username]\Documents\My Games\Skyrim\", you need to back these files up to another location (you will refer back to them later)..
2. Extract the files from this download into the directory above, overriding both Skyrim.ini and SkyrimPrefs.ini.
3. Open SkyrimPrefs.ini and locate the line sD3DDevice="DEVICE NAME." This line needs to replaced with the name of your graphics card, you can find it by opening your original SkyrimPrefs.ini (the one you backed up in step 1) and finding the sD3DDevice listed there.
4. Notice iSize W=1920 and iSize H=1080. These values represent screen resolution and may need to be altered for compatibility with your display. If you are unsure what numbers to use here, refer back to your original SkyrimPrefs.ini.
5. iScreenShotIndex may have to be altered to avoid writing over your old screenshots when you take new ones, to be safe you can set this to the value in your original SkyrimPrefs.ini.
6. iDifficulty controls the gameplay difficulty. I have set this to the default value which is "adept." If you want to change it then here is a guide:
Novice = 0
Apprentice = 1
Adept = 2
Expert = 3
Master = 4
You could also refer back to your original SkyrimPrefs.ini if you are unsure.
6. All done! I have set uGridsToLoad=9 to begin with, you can experiment with higher values =)
The game keeps crashing and I don't remember my previous settings
Simply delete both SkyrimPrefs.ini and Skyrim.ini and the game will revert back to defaults the next time you start.
My game runs slow/crashes when I change uGridsToLoad
Currently increasing uGridsToLoad is very CPU intensive and can cause crashing to desktop, I dont recommend going higher than 9. If your game crashes while loading a save game, see below.
My saves won't load after changing uGridsToLoad or I want to revert back to a smaller value
Once you save the game it will only load with a uGridsToLoad value equivalent or greater then the value used when saving. However you can circumvent this problem by using the in-game command console, here is a quick guide:
1. Right click on Skyrim.ini in "My Documents\My Games\Skyrim" and go Properties. Make sure 'Read Only' is unchecked.
2. Open Skyrim.ini (with notepad) and replace uGridsToLoad with the working value (the number that you used during the saved game you want to fix). If you can't remember what number you used, then you will have to try them all until you find one that works, 5 is the default. SAVE Skyrim.ini.
3. Boot Skyrim and load your save game. If the game fails to load, try again or repeat step 2 with a different value.
4. Once the game has loaded, Alt-Tab to the Desktop. Open Skyrim.ini and this time replace uGridsToLoad with the new value that you wish to use. SAVE Skyrim.ini.
5. Alt-Tab back to the game (NOTE: Sometimes the screen just appears black after Alt-Tabbing back into the game, don't worry just Alt-Tab through your windows a second time back into the game again).
6. Press tilde ~ on your keyboard (most commonly placed directly to the left of 1). The in-game console should now be visible. Type refreshini and hit return. Close the console using tilde.
7. Create a new save game.
8. Done, the new save should now work.
This is my first tutorial so any feedback is welcome. Thank you to the community for providing corrections and helping to refine this tutorial =)