home : reviews :
Matrox Parhelia 512 Preview : page 4
Hardware Displacement Mapping
The first time I was really excited by the possibility of 3d games was when I heard of Shiny's Messiah. Messiah, was the first game to tesselate and deform characters in the game using the software engine. So what is tesselation? Tesselation allows the game to use a lower level of detail on objects far away while allowing the closer objects to have a higher amount of polygons. Obviously, a object that's 100 feet away, would look smaller than the same object only 10 feet away.
In most of today's 3d videocards, a 3d object is rendered with the same number of polygons no matter what the distance from the viewer. While this is fine with low polycount games (10k or less), such as Quake3, it's impractical with games that require 100s of thousands of polygons or even millions of polygons. As modern games move to increasing levels of detail, there's going to be issues with passing millions of polygons across the AGP bus.
The AGP bus has a maximum bandwidth today of 1GB a second. With the Parhelia 512 having a polygon thoroughput of over 150 million polygons/second, we quickly run out of bandwidth. Say we're passing 4 byte triangles (a standard measure), you would pass 600MB of bandwidth alone. That doesn't count the needs for rendering the 3d scene, or the needs for textures. This is one reason why, though the GeForce4 has a poly thoroughput of 136 million vertices, you never see that performance in a game.
Microsoft, in DirectX 8, introduced Higher Order Surface support. NVIDIA with polynominal HOS (Bezier curves, Catmul Rom B Splines, RT patches) and ATI with their Truform (N-Patch) technology, introduced a method which allowed developers to tesselate objects in hardware. While nice, it's still not enough. Enter Matrox's Displacement Mapping technology which is being adopted as part of Microsoft's DirectX 9.0 API.
The Parhelia 512 supports the various forms of Higher Order Surfaces available in DirectX 9.0, including NURBS, Catmull Rom Splines, RT patches, B Splines and N-Patches. Unfortunately, the Parhelia is unlikely to support Truform under OpenGL without a license from ATI. It's the same situation as NVIDIA had with S3TC in OpenGL. DirectX games that support Truform should in fact work on the Parhelia, however, as ATI licensed it to Microsoft.
Hardware Displacement Mapping adds two new Matrox initiatives to 3d hardware: Depth Adaptive Tesselation and Vertex Texturing. DM actually adds geometric detail to objects, unlike the other Higher Order Surfaces which simply add curves to the object or more triangles to an object.
So what is Depth Adaptive Tesselation? Remember my bit about Messiah? DAT is an advanced tesselation scheme that tesselates meshes using multiple levels of detail (LOD) to maximize the geometry detail of a 3D scene while maintaining high performance. In other words, you can lower the detail of a object, such as a hill as you get farther away, or raise it as you get closer to the object. Many games already use a form of this in their outdoor engines. Matrox's Parhelia is the first commercial 3d videocard to adopt this in hardware, however.Vertex Texturing is a key aspect of Hardware Displacement Mapping. Tesselation, by itself cannot alter the shape of the base mesh. Some HOS (N-Patches) can add curvature to the base mesh smoothing the surface of an object. However, they don't add any detail to the object. That's where Vertex Texturing comes in.
Vertex Texturing maps textures onto geometry, the positions of the new vertices can be defined by the values or different functions of the vertices in the texture. In fact these textures can even be mapped onto the vertices after an N-Patch has been applied.
Hardware Displacement Mapping is one of the most compelling features enabled by Vertex Texturing. In the case of HDM, the texture is referred to as a displacement map. Similar to texture mapping, each vertex (pixel) is associated to the displacement map (texture map) by a displacement map coordinate (texture coordinate). Displacement texture coordinates, like texture coordinates are assigned using a (u,v) coordinate system.
Here's some pictures of how a displacement looks and how the process goes from a base mesh to a displaced mesh. Also included is the different methods of Higher Order Surfaces.