Monday, April 23, 2012

Skyrim: Beyond Ultra

I have what many would call a solid yet mediocre gaming PC.  Even so, I am running Skyrim at what I like to call Beyond Ultra settings.  Overall, it looks better than stock Ultra and it runs smoother too.  I'm posting about how I did it so friends with similar rigs can give it a shot.

Setup

CPU: Core 2 Duo E8400 @ 3.6 GHz
RAM: 4GB DDR3 1600
GPU: GTX 460 768MB @ 825MHz Core & 1050MHz VRAM (Driver: 290.53)
Resolution: 1920x1080

I use several mods, but none that affect graphics much.  Bethesda's official Skyrim High Resolution Texture Pack is installed.  The game version is 1.5.26.

Please note that I chose my settings carefully based on my hardware configuration.  For example, I have to avoid settings that use a lot of VRAM, but I can go a little more heavy on those that rely on GPU and CPU core processing power.  Someone with an Athlon II and HD 5770 1GB will be in the opposite situation.  Your mileage may vary.  Know your hardware.

Also, understand that I did not spend the time required to test everything completely.  I cannot tell you exactly what causes some of these differences, though I can make educated guesses.  Honestly, I'd rather spend the rest of my free time playing instead of investigating.  I'd be interested to hear about your own testing results, though.

With that out of the way, below are the differences in my SkyrimPrefs.ini file.  The value shown is my "Beyond Ultra" setting.  Parentheses contain the stock Ultra value.

fShadowDistance=2000.0000 (8000.0000)

fShadowDistance not only affects the distance at which shadows will be drawn, it also affects the detail of the shadows.  (Outside only.  The inside option has no effect on shadow detail.)  Lower values will result in less jagged shadow edges, but higher values will increase the number of shadows by drawing them at farther distances.  In other words, setting it to a ridiculously small value will give you an extremely smooth shadow, but the the only shadow you see will be your own.

iShadowMapResolution=2048 (4096)

iShadowMapResolution affects shadow detail only.  Higher values will result in less jagged shadow edges.  This value can actually go up to 8192 for very smooth shadows.  Changing this value will affect the framerate dramatically.

Those first two are basically the only downsides of using "Beyond Ultra."  Everything else is way better.

iMaxAnisotropy=0 (16)  0 here because instead it's 16x in Nvidia control panel.

Instead of allowing Skyrim to handle Anisotropic Filtering, I prefer to let Nvidia do it via the Control Panel.  I believe this is what is making some of my textures look more detailed than stock Ultra.

iMultiSample=0 (8)  0 here because I use SMAA instead.

Forget the built-in MSAA!  I'm using Subpixel Morphological Antialiasing.  It looks better in my opinion, and it's much easier on the GPU.  SMAA also uses up less video memory.  Previously, I used 4xMSAA and I'd eventually run out of video memory and get stuttering after extended play.  (8x was used for these tests, though.)  Now that I'm using SMAA, I haven't had that happen yet.

bTreesReceiveShadows=1 (0)
bDrawLandShadows=1 (0)

These add more shadows outside.  Fairly self explanatory

In my NVIDIA Control Panel I have the below settings enabled.  Everything else is basically standard.

Ambient Occlusion: Quality (Off)

This adds totally awesome shading to the game.  Ambient Occlusion, on at least some level, is a must.

Anisotropic Filtering: 16x (Off)  Off here because stock Ultra sets it to 16 in Skyrim's settings.

While the number is the same, Nvidia does it better than Bethesda, so the quality ends up being higher.  Not all graphical settings are created equal.

Finally, I use SMAA, which is installed by placing some files in the Skyrim folder.

Results

Let's take a look at the results.  Below are images compared using Ultra (left) and my custom Beyond Ultra (right).  By the way, if you notice a difference in the location of HUD elements in my pics, that's just the result of other custom INI tweaks that should have no effect on performance or image quality.


In this image, you'll notice several important differences.

First, Beyond Ultra actually results in slightly less jagged shadows outside even though the iShadowMapResolution is lower.  This is because fShadowDistance also affects shadow detail.  This benefit only works on exterior areas.

Second, Beyond Ultra has more and better shadows all around, most noticeable on NPC clothing and plants.  This is due to Ambient Occlusion.

Third, the ground textures have greater detail on Beyond Ultra.  I'm not sure, but I think this may have something to do with Nvidia's Anisotropic Filtering being better than Skyrim's.

Fourth, the plants look smoother on Beyond Ultra because SMAA affects transparent textures (usually leaves, branches, etc) while MSAA does not.  Nvidia's control panel does allow you enable a different transparency antialiasing, but at a greater performance hit.  You'll notice that the other edges in the picture have the same smoothness on both settings.

Fifth, what's with Ultra's weird halo effect on the outside of the guy's right arm and left elbow?  I'm not sure what caused it, but I'm guessing it has to do with antialiasing.  Another bonus with SMAA, perhaps?


Major, major differences indoors.

First, you'll notice that many of the textures on stone and wood are more detailed with Beyond Ultra.  Strangely, however, the logs on the fire are more detailed in Ultra than Beyond Ultra.  This is the only instance of this I have noticed.  I wonder if it has something to do with smoke triggering SMAA, which would blur anything behind the smoke.  Just a guess.

Second, Ambient Occlusion absolutely shines here.  Look at all those beautiful shadows in the corners and around furniture!

Third, some of the shadows have more jagged edges in Beyond Ultra.  This is due to iShadowMapResolution being lower.

Fourth, the antialiasing on some edges is a little better with Ultra.


Some new things to notice out on the road.

First, look at the shadows on the roof and other parts of the building.  They're nonexistent in Beyond Ultra because of fShadowDistance being so low.

Second, Ambient Occlusion makes most of the other shadows way better, especially on rocks.

Third, we notice that a few textures are once again more detailed with Beyond Ultra.  Look at the stone wall to the left.  Interestingly, this seems to consistently happen on objects that are closer to the player.  The wall really makes this apparent.  Again, my guess is that we have NVIDIA's Anisotropic Filtering to thank for this

Fourth, plants look way smoother with Beyond Ultra because SMAA affects transparent textures.

Fifth, some of the edges on the building actually look just a little smoother in Beyond Ultra.  However, that fence board way on the left has some weirdness going on.  That's an eyesore.


A few new things with this one.

First, take a look at some of the mountains way in the upper left.  A few of the textures are more detailed on Beyond Ultra.  Probably due to NVIDIA's Anisotropic Filtering.

Second, the trees look way better with shadows in Beyond Ultra.  This is mostly due to bTreesReceiveShadows.

Third, plants are, once again, smoother with SMAA.

Fourth, the shorter shadow distance with Beyond Ultra is painfully obvious all around, but close-up plant shadows are a little more detailed.

Fifth, look at the wings on the windmill in the distance.  Ultra does something weird with them, possibly due to Skyrim's MSAA.

Performance

Finally, below are the benchmark results.  Measurements were taken with FRAPS while standing on the highest step of Dragonsreach with the view centered on the Glidergreen.  It has been said that this view is good for benchmarking because it's fairly demanding.

Ultra: 24.529 (22/28 Min/Max)
Beyond: 32.362 (30/34 Min/Max)
Epic: 20.218 (19/22 Min/Max)

"Epic" uses all the benefits of "Beyond Ultra" with fShadowDistance=8000.0000 and iShadowMapResolution=4096.  It's the best image quality of both worlds, but with the worst performance of the three.

Again, I must point out that using SMAA instead of MSAA (4x) has removed hard drive thrashing that would occur after varying amounts of gameplay.  I can play for hours with a very smooth gaming experience.  I no longer have to restart the game every so often to clear memory.

FYI, Vertical Sync is forced off for all these, though I plan on using NVIDIA's new Adaptive Vsync when the latest drivers come out of beta.  For now, the tearing isn't noticeable enough to warrant the performance hit.  Triple buffering uses up more memory than my video card can reasonably tolderate right now.  I do know that my framerates could be higher with NVIDIA's massive improvements to the latest drivers, but I'll wait for the WHQL version.  For now, it's smooth enough.

There you have it.  Some give and take with shadows, but overall I think it's a nice improvement over Ultra settings.  And it comes with a performance boost!  If you want to do your own investigations, I'd love to hear about them.