In 2012, Peter "Durante" Thoman wrote the popular mod DSfix for Dark Souls: Prepare to Die on PC, fixing its locked 1024x720 resolution and other issues. In 2013, he released a similar fix for Deadly Premonition. We asked Durante to analyze the PC port of Dark Souls 2 in a series of articles. Here he explains how to wring the most performance from the game…
We previously investigated what Dark Souls 2 delivers out of the box , and it certainly has a nice selection of options. However, due to the unique strengths of the PC platform, we can try to go further in order to enhance our visual experience. In this article we will be relying entirely on generic, freely available tools. No hardcore hacks required.
The in-game anti-aliasing option enables a post-processing solution, more specifically FXAA3 with the “high quality” profile, as it is commonly provided in many modern games. While its implementation is of much higher quality than the blur available in the first Dark Souls PC port, it still suffers from the drawbacks inherent in such solutions (you can read more details about the various types of aliasing and anti-aliasing here ):
We have multiple options for improving image quality in the game. Since Dark Souls 2 supports arbitrary resolutions, one option is to use downsampling , either as a replacement for, or in addition to, the in-game anti-aliasing setting. This allows us to achieve an arbitrary level of desired image quality, though with a serious performance hit.
In short, downsampling from 4k resolution and beyond makes most games look their very best, bringing out all possible detail while eliminating artifacts, but it requires a very powerful PC to maintain acceptable performance levels. The screenshot below was taken at the 7680x4320 resolution (16x “Full HD”!) shown in the image above and downsampled.
However, there is another, even better option for those of you with Nvidia graphics cards. I discovered a “compatibility flag” which works with Dark Souls 2 and enables the use of any level of SGSSAA (2x, 4x and 8x). In order to perform this tweak, you need to get Nvidia Inspector and set up the Dark Souls 2 profile as shown here:
It may be slightly confusing to select numbers associated with other games such as Diablo 3 and Demigod here, but all it means is that what Dark Souls 2 does in regard to rendering is similar enough to what these games do for that particular “hack” to work. Here are the specific steps you need to perform for Inspector-based tweaking in Dark Souls 2 (as annotated in the image):
I previously described the drawbacks of the post-processing antialiasing method used in the game, but concepts like temporal stability and sub-pixel structures might appear quite abstract without an example. The following animation shows the difference on some swaying grass, which is an example of a thin structure in motion. To make the distinction more obvious, the image is scaled by a factor of 2 in both dimensions.
Note how the in-game anti-aliasing does not work well in this use case, causing flickering and image instability, while 4xSGSSAA handles the situation perfectly. AMD users need not fret, downsampling from a sufficiently high resolution can achieve similarly good results.
As you may have noticed in the earlier article, one effect in the game I haven't discussed in depth so far is its integrated ambient occlusion setting. Ambient occlusion is a screen-space post-processing effect which aims to simulate global illumination. The basic idea is that less light reaches places which are behind objects, or inside fissures and gaps, so these locations should be darkened.
The in-game effect is a quite basic implementation, which sometimes gives more of a “2D drop shadow” effect than an approximation of how real light would behave. It's still preferable to not having ambient occlusion at all, but modern methods can do much better. Perhaps the best realtime ambient occlusion method currently available is Nvidia's HBAO+ . It can be forced in a variety of games using Inspector, and after a long search I found that the compatibility flag “0x0000001F“ works almost perfectly in the game. Sadly, just a lmost, as the effect gets applied after UI elements have been rendered, so you get strange “shadow” effects on the UI. Nvidia should be able to do something about that with an official profile, but whether they will do so remains to be seen.
The picture below compares no ambient occlusion, the in-game method, and HBAO+. Note how HBAO+ gives a much more smooth, natural and detailed lighting effect, without the “halos” and errors common in simpler AO methods. You can also compare the effects using the full-size screenshots hosted here (HBAO+), here (In-game AO) and here (No AO).
One additional advantage of HBAO+ which is not visible in screenshots is that it is much more stable in motion, and does not “flicker” around small objects such as hair or grass.
In terms of performance, the in-game method is very lightweight, increasing GPU usage on my GTX 770 by about 4 percentage points in that particular scene (50% to 54%). HBAO+ requires more computation, but is still very efficient given the high quality result. It increases GPU usage to 60% when testing the same scene.
Some Dark Souls fans who were following the pre-release information closely have been disappointed that the final game does not fully capture the visual splendor of some areas which were shown off in the pre-release demo. While post-processing cannot bring back missing light sources, it can help re-capture a more dramatic mood.
One significant change which, in my opinion, negatively impacts the visuals in the final game is the high level of ambient illumination (i.e. areas which are brightly lit even when there are no light sources). Using SweetFX with a custom profile (downloadable here ), the ambient light level can be reduced, while the impact of existing light sources is strengthened.
Note that this tweak will require you to take torches or other light sources into some areas which could previously just barely be navigated without any such aids, and thus serves to make a difficult game even harder. However, I am sure that some fans will see this as an additional incentive. The performance impact of the provided profile is moderate. It increased GPU usage by 8-10% on my system.
One significant drawback of SweetFX injection is that it also affects all the UI elements. SweetFX is a generic tool which simply works on the final image produced by the game, and as such this unintended side-effect is unavoidable. Another slight problem is that the same processing is applied regardless of the area of the game you are currently in, but the profile linked above works well in most areas.
The three PC tweaking staples of downsampling, driver-level improvements and post-processing effect injection allow us to further improve Dark Souls 2's graphics, adjust them to our liking and take some beautiful screenshots. While the game is thus rendered perfectly pleasing to the eye, it may be possible to go even further. In a third and final article, we will investigate the possibilities for and likelihood of more in-depth and game-specific modding of Dark Souls 2 in the future.