Introduction
In our “GeForce FX and Half-Life 2: DirectX 8 Only?” article, we discovered that not only does GeForce FX hardware default to DirectX 8, FX cards wouldn’t run Valve’s DirectX 9 path even when DX9 was specified in the console.
It turns out that the console command we used “mat_dxlevel 90” doesn’t work properly with GeForce FX cards. Instead, Valve recommended we use the switch “-dxlevel 90” at the command line to force GeForce FX cards to run the DirectX 9 path. Armed with this knowledge, we set out to re-run our benchmarks and take new screenshots with GeForce FX running the video stress test in DirectX 9. Valve was also kind enough to provide a listing of the differences between the various APIs. We’ll get started with the feature descriptions of each path first:
| Feature usage in DirectX paths |
| Feature |
DirectX 7 |
DirectX 8 |
DirectX 9 |
| Radiosity-Based Diffuse Bump Mapping |
No |
World, Displacements |
World, Displacements, Viewmodel, Static Props, Dynamic Props, Non-Player Characters (NPCs) |
| Specular Bump Mapping |
No |
World, Displacements, Viewmodel, Static Props, Dynamic Props, NPCs (Reduced quantity than DirectX 9) |
World, Displacements, Viewmodel, Static Props, Dynamic Props, NPCs |
| Detail Props (Procedurally-placed grass, rocks, etc. based on material) |
No |
Only near |
Out further |
| Dynamic Shadows |
Blobby |
Sharp render-to-texture |
Soft render-to-texture |
| Static Props (instanced models) |
Medium Level-of-Detail (LOD) Some removed, No decals |
High LOD |
High LOD |
| Specularity |
No |
Yes (limited usage) |
Yes |
| Dynamic Refraction |
No |
Yes (limited usage) |
Yes |
| 3D Skybox |
Yes |
Yes |
Yes |
| Water |
Transparent Textures |
Pretty nice (with volumetric fog) |
Damn nice (with volumetric fog) |
| Cameras/Monitors |
In scene (if render targets are supported) |
In scene |
In scene |
| Volumetric Effects (Any smoke or fog) |
Sparse |
Yes (per-pixel lit) |
Yes (per-pixel lit |
| Shader Function |
Fixed-function (hardware T&L) |
Assembly Vertex/Pixel Shaders (VS1.1, PS1.1-PS1.4) |
DX9 HLSL Vertex/Pixel Shaders (VS2.0, PS2.0) |
| Displacement Maps (Terrain, cave walls, etc) |
Medium res |
Mid-to-High res (with diffuse and specular bump-mapping) |
Full-res (with bump diffuse and specular bump mapping |
| Texture Resolution |
Medium (256x256) |
High (512x512) |
High (512x512) |
| Texture Variety |
Low |
Full |
Full |
DirectX 7 path
Half-Life 2’s DirectX 7 path includes NVIDIA’s GeForce 256, GeForce 2 series, GeForce2/4 MX, and nForce, and the RADEON 7xxx series (with RADEON 9100 IGP and MOBILITY RADEON 9000/9100 defaulting to the DirectX 7 path as well).
Screen space effects are really simple.
No model decals
No detail props
No refractive water
Reduced decal visibility distance
No bumpmaps
Reduced model LODs
Reduced material mip level
DirectX 8 path
Among the cards included in the DirectX 8 path are GeForce4 Titanium series (including GeForce4 Go), GeForce FX 5200/5600/5700, and GeForce FX Go 5600/5700 series.
On some cards with poor fillrate, bumpmaps may be turned off in some scenes that use a lot of bumpmaps. At the moment, this is true for the GeForce4 Ti 4200 but we've worked with Nvidia to come up with a solution to reactivate bumpmaps on the 4200.
Water by default is refractive but does not have local specular.
Water has a hard edge when it meets the shore, volumetric fog is used for this. Its per vertex screen space effects are better than DirectX 7, but still simple.
Shadows are render-to-texture but are not supersampled to make them
look softer.
DirectX 8.1 path
Cards that use the DirectX 8.1 path include RADEON 8500/9100, RADEON 9000/9200, GeForce FX 5800/5900.
Water by default is refractive but does not have local reflections. If you activate local reflections on this card, it will occur in one pass as opposed to happening in 2 passes on DX8.0, which will make it cheaper from a fillrate perspective.
As in DX8.0, water has a hard edge when it meets the shore, volumetric fog is used for water. Its per vertex screen space effects are better than DX7, but still simple.
Shadows are render-to-texture and are supersampled to make them look
softer.
DirectX 9 path
Graphics cards that use the DX9 path include GeForce 6800 series, GeForce 6600 series, RADEON 9500/9600, RADEON X300/X600 series, RADEON X800 series, RADEON 9700/9800, MOBILITY RADEON 9600/9700, and MOBILITY RADEON 9800
Water by default is refractive with local reflections from world geometry.
Water refraction realistically refracts the geometry beneath the water (when looking into the water) based on the depth of the geometry in DX9.
There is a special water rendering feature which smooths out the shorelines which reduces water refraction in areas with shallow water.
There is a gradual blend from water to shore volumetric fog (for water) its per pixel screen space effects (post effects) are more complex.
Shadows are render-to-texture and are supersampled to make them look
softer.
Certain displacements use blended bumpmaps instead of a single bumpmaps (for example, displacements that blend between sand and rocks).
Notes
The main highlights we take from this is that DirectX 7 lacks bump mapping. DX7 users will also miss out on refractive water and detail props like strands of grass and rocks. Valve also mentions the use of 256x256 textures and reduced level of detail on models (with no decals).
DirectX 8 adds bump maps, but they may be turned off in some cases with lower-end DX8 cards, which don’t have the fill rate to provide fluid frame rates. Valve also includes detailed props, but only when you approach them. You’ll also get better-looking water, with some light refraction included, and higher res 512x512 textures. With DX8.1, Valve uses the same water reflection model by default (a non-local specular solution that doesn't reflect world geometry), and when activated, a one-pass local specular solution that adds world geometry reflections to water. (This takes 2 passes in the DX8.0 path.) Shadows are also supersampled in DirectX 8.1.
In the DirectX 9 path, Valve ups the ante with water. World geometry is added to the water’s reflection by default, Valve also mentions smoothing out the shorelines. If you played a lot of Far Cry, you probably noticed the harsh transitions that occurred when waves met the shore, this feature should help this. Valve also adds radiosity-based (physically correct) bump mapping to static props (items that are placed by the developer, such as desks, chairs, crates, barrels) and dynamic props and NPCs. Shadows have soft edges, with full resolution displacement maps used for areas like cave walls. You could see this in the screenshots from the original article.
|
|