The passive stereo display requires two separate channels of video, one for the left-eye view and one for the right-eye view. As high performance 3D cards for PCs use the AGP interface, and no PC motherboards exist with more than one AGP port, to get two channels of video from a single PC requires a dual-channel graphics card. We preferred to stick with a single graphics computer in order to keep the system simple. Although it is possible to construct a PC cluster system to render multiple channels, the software tools for programming such a cluster were not in an advanced enough state for easy, general use (although this is rapidly changing). Keeping the system simple to both program and maintain is important for making it accessible to institutions other than VR research groups.
A handful of dual-channel PC graphics cards are currently available. At the time that we constructed the prototype system, we used the Matrox G450 because it was the only consumer level 3D card that had support for two channels with 3D acceleration under Linux (the Evans & Sutherland Tornado 3000 was another option, but it cost significantly more money without providing significantly greater performance). Since that time, other dual-channel cards have come out with Linux support, and we have tested them in other systems for comparison. Table 2 summarizes the computers and graphics cards tested.
|Matrox G450||2 700 MHz Pentium IIIs, 256 MB memory (100 MHz),|
|RedHat 7.1 Linux, Xi Graphics LGD X server 2.0 beta|
|nVidia Quadro2MXR||2 933 MHz Pentium IIIs, 256 MB memory (133 MHz),|
|RedHat 7.0 Linux, XFree86 4.0.1, nVidia 0.9-769 OpenGL driver|
|nVidia GeForce2MX||2 550 MHz Pentium IIIs, 256 MB memory (100 MHz),|
|RedHat 6.2 Linux, XFree86 4.0.2, nVidia 0.9-769 OpenGL driver|
|ATI Radeon VE||500 MHz Pentium III, 256 MB memory (100 MHz),|
|SuSE 6.4 Linux, Xi Graphics LGD X server 2.0 beta|
|SGI InfiniteReality||Onyx2, 8 195 MHz R10000s, 2 GB memory,|
Figure 2 and table 3 show the results of two sample benchmark tests. The primary benchmark used was SPECglperf 3.1.2 . SPECglperf is a toolkit that measures the performance of individual low-level OpenGL rendering primitives. It provides a way to characterize the relative performance of different graphics hardware over a range of possible drawing options. The plot in figure 2 shows the results of one specific SPECglperf test, that of drawing display-listed, Z-buffered triangle strips, with the size of the individual triangles ranging from 1 to 512 pixels. The results are representative of the results of most of the tests -- although the PC cards are mostly slower than an Onyx2/IR, the better ones are comparable, and can even exceed the Onyx2 in simpler cases.
The results in table 3 are from an actual CAVE application adapted as a benchmark. The application used is Crayoland, a widely distributed program that makes heavy use of texture mapping on simple polygons to create a complex visual environment at interactive rates; it includes a few dozen autonomous objects moving under simple rules and several ambient sampled sounds. The table shows the average frame rate for a single, monoscopic rendering of the environment, at 1024x768 resolution. Frame rate measurements were taken at three fixed viewpoints for fifteen seconds each. The results are similar to those of the SPECglperf test; the Quadro2MXR card was able to outperform the Onyx2, while the Matrox and Radeon cards, although significantly slower than the Onyx2, were still able to perform at rates acceptable for interaction.
It must be noted that although the raw performance of current consumer PC graphics cards is quite good, the overall quality of the graphics is not always up to the level of an Onyx workstation. The Matrox G450 used in the prototype system lacks anti-aliasing support, and as a result images are sometimes very unpleasantly ``jaggy''. Newer cards include different forms of full-scene anti-aliasing, but they generally still do not have the resources to do this as well as an Onyx. Secondly, the best rendering performance on many of the PC cards is obtained by configuring them at a 16 bit color depth, rather than 24 or 32 bits. But, in this case they also use a 16 bit Z buffer, which can lead to severe rendering errors in scenes that feature both nearby and distant objects; eliminating these errors requires running the graphics card in its slower configuration.