Summary: Since discovering that GeForce FX cards defaulted to DirectX 8, we've been curious how to force the cards to run Valve's DX9 path. Over the weekend we got the console commands, and have been busy testing out a few theories. In this article we explore the various code paths, taking a look at image quality and performance with a variety of GeForce FX and RADEON cards. See what we found out inside!
Like most of today’s games, Valve’s Half-Life 2 automatically detects the hardware running inside your PC and configures itself to run with the appropriate settings for your hardware. On the CPU side, this includes looking for features such as MMX and SSE/SSE2, 3DNow!, while graphics hardware is checked for the presence of pixel/vertex shader-capable hardware, and if present, shading capability (i.e. DX8/DX8.1, DX9, etc).
Auto-detecting hardware is good for gamers who know little or nothing about their PC’s hardware. The typical consumer frequently knows little about the hardware within his or her PC other than the processor inside. These guys know nothing about shaders, trilinear and anisotropic filtering, or anti-aliasing. By auto-detecting their hardware, Valve can configure these settings appropriately with no intervention from the end user. This is a win-win scenario for both, as Valve can deliver the best overall gaming experience for that user’s hardware, while at the same time he doesn’t need to know all the fine details about his PC in order to play the game.
Auto detection is also good for those who don’t have the patience to tweak the plethora of visual settings present within Half-Life 2. Checkboxes for model, texture, water, and shadow detail are located within the video section’s advanced menu, while anti-aliasing and texture filtering can also be adjusted here. This still doesn’t include the console! It can all be pretty intimidating if you don’t know what any of these settings does.
Arguing the case for auto detection is an easy one, clearly it benefits all parties. But what happens if end users are forced down one set path, and aren’t allowed to adjust certain settings? This appears to be the case for GeForce FX card owners.
As we mentioned in our video stress test article, GeForce FX 5900 series cards are auto detected to run in DX8.1 mode, or at least that’s what the video – advanced menu in CS: Source beta says:
At the time we didn’t know how to force the GeForce FX 5950 Ultra we were using for testing into DX9 mode, or force the RADEON 9800 XT to run DirectX 8.1, but thanks to one reader, Cas Bitton, we now have the console commands:
DirectX 9: mat_dxlevel 90
DirectX 8.1: mat_dxlevel 81
DirectX 8.0: mat_dxlevel 80
DirectX 7.0: mat_dxlevel 70
DirectX 6.0: mat_dxlevel 60
DirectX 5.0: mat_dxlevel 50
In order to appeal to the widest range of gamers possible, Valve has implemented codepaths for a wide variety of hardware. Based on the console commands above, even RIVA 128/TNT’s, Rage 128s, and Voodoo cards should be capable of running Half-Life 2 on some level. Here are the default settings for GeForce FX and newer RADEON cards:
With this information in hand, we now had everything we needed to force whatever code path we wanted on GeForce FX, or any other card for that matter.
Before we run benchmarks, we first want to take a look at the visuals of the various code paths. Obviously based on our screenshots from GeForce FX last week, the DX8.1 path doesn’t look bad, but you could see some obvious differences between the FX and RADEON 9800 XT in the way water was handled. (We should note however that direct screen grabs currently aren’t possible with the video stress test, so we can’t create identical screenshots. All screenshots are taken with 4xAA/8xAF enabled).
We took the following screenshots with GeForce FX 5950 Ultra running the DX7 path:
The lack of shaders in Source’s DX7 path has a profound impact on the look of the water, you’ll also notice the lack of normal mapping on the walls of the caves in VST, the difference is pretty profound as you’ll see in our DX8.0 path screenshots with GeForce FX 5950 Ultra:
With DX8.0 shaders, the Source engine looks dramatically different than the screenshots we took with the video stress test. Those of you with older GeForce2/GeForce2 MX and RADEON 7500 cards may want to upgrade based on these screenshots. Let’s see how much of an improvement the DX8.1 path brings:
The most profound difference we can see with the DX8.1 path is the ripple effect of the water in the overhead shot – it isn’t as pronounced. You’ll also notice the addition of smoke to the flames in the scene with the Predator character. Now lets force DX9 on GeForce FX 5950 Ultra:
The DX9.0 GeForce FX 5950 Ultra screenshots look remarkably similar to the DX8.1 screenshots. Spotting differences is next to impossible. This was incredibly suspicious to us, and our first indication that something was amiss, so we grabbed a RADEON 9800 XT and started taking screenshots. To help save on page load times, we’ve provided the RADEON 9800 XT screenshots on the next page, you may want to open the third page in a new window (right click on the link below and select "open in new window") so you can refer back to the GeForce FX screenshots.
Before we get into the DX8.1 versus DX9 comparison, we first want to take a look at DX8 (again, note that these aren’t identical shots of the same scene):
We can't see any dramatic differences between the RADEON 9800 XT and GeForce FX 5950 Ultra when running the DirectX 8.0 path. Both cards deliver visuals of similar quality.
RADEON 9800 XT with DirectX 8.1:
DirectX 9 versus DirectX 8.1
As we mentioned at the end of the second page, we were pretty surprised at how similar the 9.0 and 8.1 paths looked on GeForce FX 5950 Ultra, so we took more screenshots with ATI’s RADEON 9800 XT running the DX9.0 path in video stress test:
Here’s where we get our first indication of differences between DX9 and DX8.1. Look closely at the walls of the cave in the first two shots. In the DX8.1 screenshots, the ridges are much more pronounced (the water is also nearly transparent in the second DX9 shot for some reason). We believe Valve is using bump maps to create the walls. You can really see this in the area directly underneath the light in the first image, while in the second picture you can see the difference along the right and left walls of the cave. Here Valve may be using normal maps, or going one step beyond that with virtual displacement mapping:
RADEON 9800 XT DX8.1
RADEON 9800 XT DX9.0
If you refer back to the GeForce FX 5950 Ultra DX9 versus DX8.1 screenshots on page 2, you’ll notice that the FX board in DX9 looks more similar to the 9800 XT’s 8.1 mode than it does the 9.0:
GeForce FX 5950 Ultra DX8.1
GeForce FX 5950 Ultra DX9.0
This pretty much confirms our theory that the FX is running DX9, but in order to prove it, we ran benchmarks with the video stress test. (There are other examples besides the one mentioned above, such as the marble slab in the last screenshot. You can also note differences in the water’s ripple effects in that image as well).
AMD Athlon 64 3800+
ASUS K8V Deluxe
1GB OCZ PC3200 EL Platinum Rev2
ATI RADEON 9800 XT
ATI RADEON 9600 XT
eVGA e-GeForce FX 5950 Ultra
eVGA e-GeForce FX 5700 Ultra
eVGA e-GeForce FX 5600 Ultra
NVIDIA GeForce FX 5200 Ultra reference board
PNY Verto GeForce 6800 GT
Windows XP with Service Pack 1
60GB Western Digital Special Edition with 8MB cache
Half-Life 2 Video stress test
Half-Life 2 VST – Direct3D
Half-Life 2 VST – Direct3D
Based on the screenshots and performance benchmarks, it appears that not only do GeForce FX cards default to DX8/DX8.1, but they also can’t be forced to run Valve’s DX9 path in the Counter-Strike: Source beta release. Instead, the maximum level GeForce FX cards currently support is DirectX 8.1.
Fortunately, Valve can produce most of Half-Life 2’s most stunning effects with 1.4 shaders, even the 8.0 code path looks similar, producing an image that looks quite good. As a result, you may have a hard time seeing some of the differences between the DX8.1 path and the DX9 path until you run the two side-by-side.
However, this brings up an interesting dilemma when benchmarking cards – should we stick with the default settings, or run comparable ATI hardware in the respective mode? In the case of the RADEON 9800 XT, this would mean the DirectX 8.1 path, while mainstream and value RADEON cards would need to be run in DirectX 8.0. As you saw in our performance testing, the 9800 XT and 9600 XT get quite a boost running these paths, although the 5700 Ultra still manages to outperform the 9600 XT when AA/AF is enabled.
If we want to run true apples-to-apples comparisons, obviously we’d need to force the RADEON cards to run in DX8/DX8.1. But if we’re simply trying to recreate the experience of the average user who doesn’t know about different rendering paths and how to force them, we should stick with the defaults.
We’re leaning towards forcing the RADEON cards to run DX8/DX8.1, but we’d like to hear your thoughts. Let us know what you think in the news comments!
|© Copyright 2003 FS Media, Inc.|