Borderlands 2 performance tweaking

I’ve had a couple people online ask me what all I’ve done to my Borderlands 2 .ini files to solve some annoyances and framerate-related issues within the game, as well as decrease the amount of pressure on the GPU. I thought I’d take the time to list off all the changes I use for my GTX 560 Ti + Core i7 2600K-based system running on Windows XP SP3, under 1920×1200.

Before I get started, I want to make a few things clear in advance:

  1. I don’t like games which cause my video card to kick its fans up into high speed due to high GPU or graphics MCH stress; I prefer to hear the sounds of the game without the white noise of CPU or GPU fans masking things. Likewise, temperatures like 60C aren’t acceptable by me.
  2. I prefer to play games with Vsync enabled, even with LCDs. I can see screen tearing quite easily, even with things like nVidia’s adaptive Vsync in use. Windows XP doesn’t make accomplishing proper Vsync in windowed mode very easy (for DirectX/Direct3D or GDI applications for that matter). Using Vsync has an additional benefit with regards to the previously-mentioned item: it does in fact cap the maximum framerate. Windows 7 is quite a different beast in this regard; I’m talking on XP.
  3. At least on Windows XP, the game must be run in full-screen mode (not “windowed fullscreen” either) to get the smoothest performance with Vsync enabled. This condition isn’t specific to Borderlands 2 either; the same advice applies to Diablo 3.
  4. Borderlands 2 on my system tended to run around 30-40fps in “heavy” areas (such as the starting area — and don’t ask me what’s “heavy” about it). With the below tweaks, I get 60fps pretty much all the time, barring some areas where there is obviously a lot of detail. So overall the feel of the game is much, much better.
  5. Unlike forums and “enthusiast sites”, I will happily explain what all of these settings do, rather than just tell you “hey u set theiz i g3t 10fpsss lol kbye”.

That said, here are the settings I use (meaning all values that differ from the stock .ini defaults):

WillowEngine.ini

[Engine.Engine]
DefaultPostProcessName=WillowEngineMaterials.RyanScenePostProcess
MipFadeInSpeed0=0
MipFadeOutSpeed0=0
MipFadeInSpeed1=0
MipFadeOutSpeed1=0

[SystemSettings]
DynamicShadows=false
DepthOfField=false
AmbientOcculsion=false
Bloom=false
bAllowLightShafts=false
UseVsync=true
Fullscreen=true
WindowedFullscreen=false
MaxAnisotropy=0
FXAA=false
ResX=1920
ResY=1200
FoliageDrawRadiusMultiplier=0.500000
ViewDistance=2
FramerateLocking=6

[FullScreenMovie]
; StartupMovies=2K_logo
; StartupMovies=Gearbox_logo
; StartupMovies=NVidia
; StartupMovies=Loading

WillowInput.ini

[Engine.PlayerInput]
bEnableMouseSmoothing=false

Now let’s talk about each of the settings individually. I’ll provide reference materials for each of them (if applicable); read and learn!

WillowEngine.ini

  • DefaultPostProcessName=WillowEngineMaterials.RyanScenePostProcess — disables “vignette” or pseudo-cel-shaded-with-black-borders look. Some people like it — I don’t, and I didn’t like it in Borderlands 1 either (Reference)
  • MipFade{In,Out}Speed{0,1} — when set to 0, effectively disables the “texture streaming” feature, meaning the game will “pop in” a texture when it loads (vs. show some half-ass blurry garbage in the meantime). And yes, I am quite aware of the bUseTextureStreaming variable; go right ahead and set that to false and see what happens (hint: don’t do it) (Reference)
  • DynamicShadows — handles (to some degree) support for polygon-based shadows generated by moving objects. Disabling this has a very big effect on performance, just like it did in Borderlands 1 (Reference)
  • DepthOfField(Reference)
  • AmbientOcculsion(Reference)
  • Bloom — I’ve never liked the way bloom looks and it often kills performance (especially when used with HDR) (Reference)
  • bAllowLightShafts(Reference)
  • UseVsync — should be obvious
  • Fullscreen — should be obvious
  • WindowedFullscreen — should be obvious
  • MaxAnisotropy — a value of 0 disables anisotropy (Reference)
  • FXAA(Reference)
  • Res{X,Y} — should be obvious
  • FoliageDrawRadiusMultiplier — a value of 0.5=Near (Reference)
  • ViewDistance — a value of 2=High (compared to 3=Ultra High)
  • FramerateLocking — a value of 6=Unlimited. I set this to 6 because UseVsync effectively provides a cap on the framerate while ensuring no screen tearing
  • StartupMovies — commented out because I absolutely abhor these things, even if they’re skippable. Note that this is different than setting bForceNoMovies=true — that disables all in-game movies/cinematics rather than just the worthless startup videos

Despite what you might read online, I do not recommend setting DynamicLights=false to gain performance. The gain is negligible and the results in-game are crap (especially during the stage loading screens where you’ll see a rotating gun; now you’ll see a rotating set of pitch back polygons). Keep DynamicLights=true!

WillowInput.ini

  • bEnableMouseSmoothing — just Google this one yourself. For a lot of people, disabling this allows for a much more responsive mouse; I disable it by habit. And if someone tells you to set OneFrameThreadLag=false because it also helps: don’t!

Naturally you should adjust these to your own liking.

Finally, for those who play the game via Steam, disabling the horrible Borderlands 2 launcher is a snap: do a Properties on the game, choose the General tab, pick Set Launch Options… and put the string -nolauncher in the provided field.