DOTA2 with SLI Graphic Corruption Fix

I’m using an NVidia GTX690, in 2d surround mode.  The GTX690 is an SLI card, and in 2d surround mode SLI is not optional.  Running DOTA2 on this system (even on just one monitor) causes all sorts of random graphic corruption.

This corruption manifests itself as flickering text, distorted polygons when hovering over menu items, that sort of thing.  Nothing terrible, but it’s annoying.  Fortunately, I found a fix!

This thread on the DOTA2 Dev forums worked perfectly for me.  I’ll summarize it here in case that thread disappears;

What I ended up doing was downloading the latest nvidia inspector. I changed my values for a few options. (see below)

‘Number of GPUs to use on SLI rendering mode’ : SLI_GPU_COUNT_TWO
‘Nvidia predefined number of GPUs to use on SLI rendering mode’ : SLI_PREDEFINED_GPU_COUNT_TWO
‘Nvidia Predefined SLI mode’ : SLI_PREDEFINED_MODE_FORCE_AFR2
‘SLI rendering mode’ : SLI_RENDERING_MODE_FORCE_AFR2

And a screenshot of my settings in NVidia Inspector follows;

NVInspector DOTA2 Configuration

 

The items in grey are unchanged.  Seems to have worked immediately, and performance seems fine.

Triplehead FOV with DCS World 1.2.4

I did some work on getting triple-head going properly in DCS: World 1.2.4 (7680×1440 with three 2560×1440 monitors).  I’ve tested that everything seems to work fine with the A-10C Module.  Also looks fine with the F-15 (so probably everything in Flaming Cliffs 3), and the Ka-50 Black Shark. The Ka-50 viewpoint is a little buggy and will try and zoom out a LONG way when you enter, so just press * to zoom in until it looks normal.

A-10C Cockpit
A-10C in DCS World 1.2.4
Cockpit of a F-15C
F-15C in DCS world 1.2.4
Ka-50 Cockpit in DCS World 1.4.2
Ka-50 in DCS World 1.2.4

In order to set up, you’ll need to do the following;

  • Apply the diff file from here to your DCS World setup.  It’ll go and change a couple of files in minor ways.  You can also get a ZIP of these files already changed suitable for DCS World 1.2.4.12913.167 from this link:  TripleheadFOV-1.2.4.12913.zip
  • Copy autoexec.cfg from here into your C:\Users\<username>\Saved Games\DCS\Config folder.
  • Copy SnapViews.lua from here into your C:\Users\<username>\Saved Games\DCS\Config folder.

The diff allows use of customized snap views, and sets the default external viewing angle to 120 degrees (maths as to why this is right can be found at this link).  It also hardcodes the screen width for some UI elements to 2560×1440, and pushes the radio chatter windows across one screen so that they render on the middle screen and not on the right.  And lastly, it modifies Server.lua to allow the widened FOV for the Ka-50.

The autoexec.cfg sets the maximum fps to 60, to avoid issues that tend to happen with microstutters on SLI.  The SnapViews.lua contains recalculated viewing angles for all default snap views such that they are corrected for triple-head FOV, as per my prior post on the topic.

Enjoy.

Triple-head with Guild Wars 2

Over the weekend I decided to go and give Guild Wars 2 a go.  I’d heard some good things about it, and I wanted to try it out since I’m after something that’s in the fantasy MMO style, but doesn’t attract a subscription fee.

Anyway, I was very surprised and pleased that it just worked with my triple-head monitor setup!  No messing about, I just selected the appropriate resolution, adjusted some of the detail settings down a little, and here we go;

Click for full size.  It’s HUGE.

That JPEG has had its quality dropped a lot to keep it at a semi-reasonable size, so expect artifacts and such.  But it gives you an idea of what the view looks like.  The movies all play correctly (in the center monitor), the UI renders sanely, and the game plays just fine in triple-head.  There’s a few minor niggles though;

  • Character creation splashes flicker.  Unknown why.  The mouse isn’t aligned properly in those screens.
  • Increasing the UI size from ‘Normal’ as in the screenshot above to ‘Large’ or ‘Larger’ pushes the UI to the right and off the center monitor.  

This is pretty annoying, because my 27″ 2560×1440 monitor has a vertical dot pitch of 0.0092″, so any UI elements which are fixed in a small number of vertical pixels are REALLY small.  Oh well.

In terms of graphic detail adjustments, I’ve generally found with games in triple-head you first run out of VRAM before performance on a GTX690.  Running out of VRAM is really easy when you have so many pixels on-screen.  So here’s the usual settings that I play with;

  • Vertical sync.  I leave this unset, and then control it through the NVidia Control panel in ‘adaptive’ mode.
  • Framerate Caps.  If a game has the ability to set a maximum framerate, I set it at 60.  No need to stress hardware when you can only display frames at 60 fps anyway.  It also seems to reduce the micro-stutters you get when you run uncapped.
  • Shadow detail.  This seems to steal a fair bit of VRAM, and usually I don’t care much about shadows.  I turn this down to low, but usually not off.
  • Grass/tree detail.  I turn this down a bit if needed.  Games like SWTOR seem to attract a heavy performance penalty for having these up.  Turning them down to half has very little visual effect but greatly improves performance.
  • Antialiasing.  With a high resolution display with a small dot pitch, AA doesn’t really offer a whole lot.  It consumes huge amounts of VRAM.  I usually turn this right off.
  • Draw distance.  If you get desperate, reducing draw distance a little can make the difference between filling up your VRAM and running smoothly.

Key signs that you’re filling up VRAM are when you move into a new area (ie, new textures), and experience a framerate stutter and then everything runs smoothly again.  In a flight simulator, it can be exhibited by stuttering when close to the ground.

Because of the way that NVidia SLI works, a “4Gb” card actually has 2Gb effective useable, because each GPU (there are two) has to maintain the same VRAM buffer set, and so you can only fit 2Gb of actual textures and other data in there.  That’s why it’s so easy to run out of VRAM.

Anyway, with a little bit of adjustment, GW2 runs at 50-60 FPS with no stuttering, and still looks really nice.  Now I’m just hoping that the vendor fixes up the UI so that I can increase the UI size and it’ll be perfect.

FOV Adjustments for TripleHead Setups

Many games appear to do horrible things with the viewport when you are using a display with a strange aspect ratio – such as a triple head setup.  The aspect ratio of my setup is 48:9, which plays merry hell with viewports in flight sims that are designed to look ‘normal’ with a 16:9 setup.  The usual result is that views are horrendously thin vertically.

Anyway, I did some trigonometry (which is probably a bit broken) and came out with a formula that lets you convert a FOV figure that’s intended for a normal aspect ratio and convert it to an FOV that’s appropriate for a triplehead setup.

\displaystyle \theta = 2 \tan ^{-1} ( 3 \tan \frac{\alpha}{2} )
Where
\alpha = original FOV
\theta = new FOV

Using this, the result that you get is the ‘original’ view, instead of being spread horizontally across three monitors and then the vertical component being hopelessly thin will be spread across only the center monitor.  This means that you’ll see extra stuff on the left and right that wouldn’t have been in that viewport normally, but the vertical view will be normal.

Doing this in something like A-10 with the left and right MFCD’s works great – the MFCD appears on the central monitor and pretty well fills it, which is what you’d expect.  Without adjusting FOV, you just get about 1/3 of the MFCD into the display.

A conversion chart appears below for those who don’t want to do math;

FOV Conversion Chart
Standard FOV Triplehead FOV
20 55.76
30 77.59
40 95.03
50 108.88
60 120.00
70 129.09
75 133.04
80 136.67
90 143.13
100 148.75
110 153.72
120 158.21
130 162.33
140 166.16

75 degrees is included here because that’s the default FOV for a lot of the DCS simulations.  The triplehead FOV of this (133 degrees) winds up being very close to the value that I figured out by eyeballing it (which was 135 degrees), so I’m fairly happy this is accurate.