Elder Scrolls IV: Oblivion Tweak Guide
[Page 8] Advanced Tweaking
While Oblivion has many in-game options for adjusting visual quality and performance, that's not where the tweaking stops. Fortunately, Oblivion has been designed for user modification (or 'Mods' - see page 4 of the guide), which make complex gameplay or graphics adjustments relatively simple to implement. Furthermore, there are a range of parameters users can access and alter to change the way the game looks and acts. There are two main ways to tweak Oblivion variables - the initialization (.ini) file; and the in-game console. This section deals with the .ini file adjustments, while the Console Commands section deals separately with using the in-game console.
Please pay careful attention to how to implement these tweaks, and read the instructions on what they do closely. While you are free to experiment, and I have tried to only include "safe" working tweaks here, bear in mind that you can get some unusual results and perhaps experience odd problems by making too many changes, so take things slowly and test the effects of the tweaks using a few different saved locations to see if they are working correctly for you - different systems will exhibit differing results. This may be tedious, but it will give you the best results.
Oblivion.ini
By default, each time Oblivion loads up, it reads the values held in the Oblivion.ini file stored under your \Documents and Settings\[username]\My Documents\My Games\Oblivion directory (or Users\[username]\Documents\My Games\Oblivion in Vista). This file can be opened and edited using a text editor like Windows Notepad or Wordpad, however before editing it, first change all of your in-game settings to the way you want them, then close Oblivion and make a backup copy of this file. If at any time you want to find the default values for any of the .ini variables, open the Oblivion_default.ini file under your \Program Files\Bethesda Softworks\Oblivion directory. This file contains all the defaults for Oblivion on your system, and should never be edited or deleted. If you want the game to quickly restore all the default values for your Oblivion.ini file, simply delete the Oblivion.ini file and it will be recreated with the default values the next time you start Oblivion. This can help to quickly resolve any problems you may be having as a result of incorrectly tweaking variables, however obviously you will lose all your customizations as well as your in-game settings preferences.
The performance impact of these tweaks will vary from machine to machine, sometimes significantly, but the general impact is indicated. Note that I have tested every variable in the Oblivion.ini file, and those which seem to have no discernable or useful impact, or which can cause crashes or odd behavior are not included below. Some of the variables people have been using do not do what they think they do, so if you see some notable exceptions, bear in mind that it is likely they are either not useful, or can be adjusted in-game - settings which can be fully altered using the in-game settings aren't shown below, unless they can be tweaked further.
Note: If you're having problems finding any of these commands in your Oblivion.ini file, first make sure you're using the right .ini file (read the info above again carefully), then go to the top of Oblivion.ini, press CTRL+F to open the search box, type or paste the name of the command into there, and it will find it for you. All commands below are in everyone's .ini file.
Below are all the major variables you can edit in the Oblivion.ini file, and a description of what each does based on my research and testing to date. They are sorted into categories based on their common purpose:
[General Variables]
bAllowConsole=1 - This setting allows you to use the in-game console (See Console Commands section) if set to 1. There is no reason to set it to 0.
bAllowScreenShot=1 - If set to 1, allows you to take a screenshot at any time by pressing the PRINT SCREEN key. Screenshots will be in BMP format and stored in your \Program Files\Bethesda Softworks\Oblivion directory. Alternatively, you can use Fraps, which is my preference.
SScreenShotBaseName=ScreenShot - This determines the name given to every screenshot file (followed by a number as determined below), e.g. Screenshot12.bmp.
iScreenShotIndex=7 - This determines the number given to the next screenshot taken.
iDebugText=12 - Sets the level of detail of the debug text visible when you use the TDT command (See Console Commands section). You can also use the SCROLL LOCK key to manually scroll through the various debugtext screens while TDT is active. DebugText=2 provides the most compact but useful text.
fDefaultFOV=75.0000 - Determines the default Field of View whenever you start Oblivion. If set differently from the default of 75 degrees, can put screen elements out of synch and also insert borders around the screen. Use the FOV Console Command instead (See Console Commands section), and also see the methods discussed here.
fGlobalTimeMultiplier=1.0000 - Raising the value above 1 speeds up the rate at which world time passes, lowering it below 1 slows down time. This setting is interesting for watching rapid-motion sunsets/sunrises for example.
bBorderRegionsEnabled=1 - If set to 0, this option removes the invisible barriers around the outer parts of the game world, though not much is beyond.
iMaxDecalsPerFrame=10 - This value determines the maximum number of decals (blood marks) visible on screen at any time. Note that decals can have a noticeable impact on performance, so raising this value can reduce FPS during combat.
fDecalLifetime=10.0000 - This value determines the time in seconds before decals (blood marks) disappear. The higher the value, the longer the blood marks will take to fade away. Note again that decals can have a noticeable impact on performance.
fMinBloodDamage=1.0000 - This value determines the minimum amount of damage you must inflict to draw blood.
bUse Joystick=0 - Set to 0 if you don't have a joystick connected, some people claim this improves FPS and resolves mouse/input lag.
bInstantLevelUp=0 - If set to 1 allows your character to instantly level up without having to rest in a bed.
bSaveOnInteriorExteriorSwitch=1 - Controls whether to autosave whenever you enter/exit buildings. Setting to 0 can reduce loading pauses during entry and exit of buildings.
bPrecipitation=1 - If set to 0, disables rain effects.
Update: The following setting was added to this section as of the 1.2 Patch:
bCheckIDsOnInit=0 - This variable appears to be for troubleshooting purposes, in that it checks to make sure object/NPC IDs are correct as the game loads. There is no impact from setting this to 1, so it is best left at 0 unless you are having quest problems for example.
[Graphics Variables]
bFull Screen=1 - Determines whether to start Oblivion in Fullscreen/Windowed mode - see In-Game Settings section. Useful for changing here in case you have problems with the Oblivion Launcher.
iSize W=1280
iSize H=1024
The above two values determine the screen width and height in pixels respectively - you can specify a custom screen resolution (in Windowed mode only) by changing these values.
fGammaMax=0.6000
fGammaMin=1.4000
The above settings are useful particularly for those with older monitors - you can alter the limits on the gamma (Brightness slider), and hence allow further adjustment of the brightness slider to suit your monitor.
iShadowMapResolution=1024 - This variable determines the resolution of the shadow maps. By lowering this value (always using a multiple of 8), you can gain significant FPS in areas with dynamic shadows in return for much 'rougher' looking shadows. For example, try a value of 128 to see the performance and image quality impact.
bAllow30Shaders=0 - If set to 1, this option allows (but does not force) the use of Shader Model 3.0 on graphics cards which support it, namely Nvidia GeForce 6600 or newer, or ATI X1000 series or newer. This can potentially improve performance when using HDR rendering for example. Check your RendererInfo.txt file in your \Documents and Settings\User\Documents\My Games\Oblivion directory to see if your card supports SM3.0 next to the option '3.0 Shaders'. Note however that even by enabling this option, Oblivion still appears to use 2.0 shaders (check the 'PSTarget' and 'VSTarget' lines in Rendererinfo.txt). In any case, if you have one of the cards mentioned above, it cannot hurt to enable this option.
Update: To force the actual use of 3.0 Shaders after making the above change, you will also need to check your RenderInfo.txt file (see above), and on the last line of the file check which shader package it uses (e.g. Shader Package : 13). Then go to the \Program Files\Bethesda Softworks\Oblivion\Data\Shaders\ folder and rename that particular package to something else (e.g. rename shaderpackage013.sdp to shaderpackage013._bak. Now copy shaderpackage019.sdp and paste it back into the same directory, and rename this new copy to the package name your card uses (e.g. rename it to shaderpackage013.sdp in this example). This will force Oblivion to use the Shader Model 3.0 shaders in the game, which may increase (or reduce) performance and typically shows no image quality difference.
iActorShadowIntMax=10
iActorShadowExtMax=10
The above two options allow you to raise the maximum number of Interior and Exterior Shadows possible (as set by your in-game sliders). The normal maximum is 10, and obviously raising this can reduce FPS.
fSpecualrStartMax=1000.0000 - This option determines the maximum range of specular lighting, if enabled (See Specular Distance in the In-Game Settings section). Lowering this value may provide some additional FPS in outdoor areas, without having to turn off Specular altogether. Alternatively you can raise it further to gain specular lighting on distant objects. Note that the word specular has been misspelled as 'specualr' in the name of this variable - don't correct it as the misspelled version is the one the engine detects.
fShadowFadeTime=1.0000 - Determines how many seconds it takes for shadows to fade in/out as you approach/retreat from objects/characters which cast shadows.
bAllowPartialPrecision=1 - This setting determines whether the shaders run in Partial Precision DX9 mode. Essentially this should be kept at 1, since partial precision provides the best FPS for minimal or no noticeable image quality loss, particularly on Nvidia FX graphics cards. However if you want the best possible image quality, set this to 0 at the cost of some FPS.
bUseRefractionShader=1 - This setting controls the shimmery/invisibility effect. Setting it to 0 can noticeably boost FPS in areas where this effect is used, such as around invisible characters, or at an Oblivion gate. Note in particular that ATI users who have major problems in such areas in particular should set this to 0, though that in turn may cause other problems.
bDoTexturePass=1 - Setting this to 0 removes textures from most objects. It can improve FPS but is obviously not recommended.
bDoSpecularPass=1 - If set to 0, removes the shiny effect on most appropriate surfaces (See Specular Distance in the In-Game Settings section). This can noticeably improve FPS on many systems, but can also cause crashes in certain areas (e.g. Weynon Priory). You can try to reduce these crashes using this mod.
bDoDiffusePass=1 - If set to 0, removes all dynamic lighting and hence is not recommended.
bDoCanopyShadowPass=1 - If set to 0, removes all tree shadows, which can improve FPS in forested outdoor areas.
bLocalMapShader=1 - If set to 0, removes the brown hazy overlay on the local area world map, making the colors much brighter but also highlighting the relatively low resolution of the map. Consider a high resolution map mod to fix this - see page 4 for mod site details.
Update: The following two new graphics variables were added to Oblivion.ini as of the 1.1 Patch, likely the settings which are enabled when 'Very Low Quality' mode is chosen for older graphics cards:
bFullBrightLighting=0 - If set to 1, alters the global lighting method to one which is far less detailed and doesn't use complex shaders, hence is much less strenuous for older cards. The results are graphically unpleasant as most textures look terrible, and there will be some graphical glitches, but this should allow older cards to run Oblivion more smoothly.
MaxLandscapeTextures=0 - If set to 1, this setting appears to increase the use of generic landscape texture in place of more specific ones. This saves on texture memory, but can cause graphical oddities, such as roads being replaced with grass textures, or clear lines where different types of textures should blend into each other. It may also cause problems with the LOD Texture Replacement mods, and hence is only recommended for those with very low-end graphics cards struggling with stuttering and low FPS.
Update 2: The following graphics variable was added as of the 1.2 Patch:
bLandscapeBlend=1 - If set to the default of 1, it provides smoother blending of distant LOD textures with closer detail textures as you approach objects/terrain. This setting should be left enabled, as it prevents the previously unrealistic way in which distant textures went from being very blurry to suddenly becoming sharp and distinct as you approached them. It should also result in less dramatic loading pauses as you move around.
The next page continues the .ini tweaks.