Many games of the DX9 era and surprisingly some current DX11 titles as well don't support MSAA. To sum up the current situation:
- Driver based MSAA-hacks only possible in DX9, but not for all games (e.g. GTA 4, Dead Island)
- No possibility to force MSAA in DX10+ (e.g. Crysis 2 DX11)
- Sometimes bad MSAA quality in DX10+ (e.g. Max Payne 3 DX11), doesn't combat shader aliasing
- Postprocessing-AA (FXAA, SMAA, MLAA) can be blurry and often fail in motion.
There is another solution that works in almost every game, be it DX9/10/11/OpenGL, that doesn't blur and that combats edge aliasing, shader aliasing and transparency aliasing alike. Colloquially we call it "downsampling" (or more correctly downscaling).
2. What is downscaling and what can it look like?
When using downscaling, the image is rendered at a higher resolution than the one it will be displayed at. This leads to a significantly larger amount of data that a downscaling filter can use to smooth the image and reduce aliasing artifacts.
For example the image is rendered in 3840x2160, downscaled to 1920x1080 and then displayed. Below are some screenshot examples
MP3 1080p............................................. ..................MP3 3840x2160@1920x1080
GTA4 1680x1050......................................... ......................GTA4 3138x2100@1569x1050
3. Questions and answers
- Q: What are the scenarios that downscaling is recommended for?
- A: Games where no AA is possible and/or games where only FXAA/SMAA/MLAA seem insufficient.
- Q: What do I need?
- A powerful graphics card or SLI/CF.
- Current drivers and Fermi and Kepler cards are recommended.
- Windows Vista or Windows 7 is required, Windows XP is not supported
- Dual-link DVI for 60Hz with certain cards (see below)
- In certain cases: A display that can run below 60Hz
- Q: What resolutions are recommended?
- A: Ideally, you will be running a resolution that is 4 times higher than normal, but there are intermediate steps. There are (within reason) no limits as to what resolutions you can create. However, a factor of 4 (2x2) and 2.25 (1.5x1.5) is recommended for best sharpness and quality.
For example on a 1080p screen you can run:
2880x1620@1920x1080 (factor 1.5 per axis)
3840x2160@1920x1080 (factor 2.0 per axis)
If you want 2x2 and lack the graphics power to run 3840x2160, you could also run these:
- Q: Can downscaling damage my display or my graphics card?
- A: No. The worst thing that could happen is that during a failed creation of a custom resolution, your display may go blank and you need to reboot (this won't happen when using R300+ drivers)
- Q: Are there limits to the resolution and/or the refresh rate?
- A: Yes, but this depends on your graphics card and/or on the connection. With most Fermi cards (400 and 500 series), you are limited to a maximum pixel clock of 165MHz (it may work a little bit above 165MHz, but image quality could degrade severely, see next question). This limits downscaling to 3840x2160 at a refresh rate below 60Hz. It has been observed that 60Hz are possible when using a card that has Pure Video 5 functionality like a GT520 and all Kepler cards (600 series):
This limit might also be void if using a Dual-link DVI connection usually found in larger displays (2560x1440 and above) that raises the maximum pixel clock above 165MHz. Other connection types (Display Port, HDMI) might do the trick as well (unconfirmed).
- Q: My custom resolution is blurry?
- A: This may happen when using intermediate "uneven" downscaling factors instead of 2x2 or 1.5x1.5 or when going above the 165MHz pixel clock.
- Q: Does the graphics driver have any influence?
- A: Yes. It has been observed that the process of creating a custom resolution is influenced by the driver version. For example, on pre-R300 drivers the image would not come back after a failed test, requiring a reboot. The maximum achievable refresh rate has also been known to vary between driver versions. Currently, R300 drivers are recommended.
- Q: Are there compatibility issues?
- A: Generally, no. But in some games the HUD and text on screen may become very small. Some games require a resolution to run at 60Hz. For certain configurations, this limits the achievable resolution.
Important for resolutions below 60Hz:
- Q: Why doesn't my custom resolution show up in Windows or in my games?
- Every display has an associated EDID (Extended display identification data) where all relevant information stored. This includes a minimum refresh rate. If you create a custom resolution with a refresh rate that is higher, it will not be available to Windows or applications. For example, my display by default has a minimum refresh rate of 56Hz which is why 3840x2160@1920x1080@50Hz will not show up. In this case you will have to lower this limit by editing the EDID as described below.
The following advanced procedure isn't very difficult, but great care should be taken nonetheless!
In this link you will see a video description of all 3 steps involved:
You need three small and free programs for this:
2. Phoenix EDID Designer
3. Monitor Asset Manager
You can find them here:
A short summary:
1. Read the EDID from the monitor driver
2. Edit the Hz-limit (and only that!) in the EDID
3. Create a new monitor driver file (.inf) with the modified EDID
4. Install the new driver file via the device manager
It is recommended that before you proceed you save the original EDID and create an unchanged monitor driver - just in case. If you like, you can create a restore point as well.
4. Instructions (Nvidia)
Note: You should run a current driver (R300+).
- Go to the Nvidia control panel and select "Change resolution" under the "Display" section. Select "Customize"
- Select "Create Custom resolution"
- Select "Manual"
- Create the resolution
For smaller resolutions like 3360x2100@1680x1050 you might be able to just change the rendering resolution and don't have to touch anything else. But when you get the message "test failed", you probably will need to increase the value for the total horizontal pixels. This will in turn increase the pixel clock which as mentioned above should not go beyond 165MHz on most configurations. You will have to play a bit with the refresh rate and the total pixel values to get your desired result.
For example, on my display, the LG Flatron IPS235P (1920x1080) I had to increase the horizontal total pixels from originally 2200 to 2800 and lower the vertical total pixels from 1125 to 1090 for 3840x2160@54Hz to work and to stay below 165MHz.