GeForce 3D Vision: Stereoscopic 3D From NVIDIAby Derek Wilson on January 8, 2009 2:30 PM EST
- Posted in
Not Just Another Pair of Glasses: GeForce 3D Vision at Work
While the GeForce 3D Vision solution does include some pretty nice glasses, that's not where it ends. We'll start there though. The glasses are small and light weight with polarized LCD lenses. The glasses contain a battery, LCD controller and IR receiver. They charge over USB and can be plugged in to the system while in operation or not. We haven't done a full battery life test, NVIDIA claims battery life to be about 40+ hours of operation on a single charge. We can say that we haven't needed to recharge in all our testing, which was a good handful of hours over a few days.
We were a little surprised that NVIDIA went with IR at first, but it makes a lot of sense from a battery life perspective. Though the glasses need line of sight with the transmitter, you do need line of sight to the monitor to see it anyway, so it's not a huge deal. There can be issues with having a bunch of people in the same room using the glasses or if there are other IR devices transmitting around the room. We didn't have enough equipment to really push it till it broke, but it did stand up to throwing a Wii and a universal remote at it.
The transmitter connects to the PC via USB or it can connect to a stereoscopic monitor with a standard stereo connector. The transmitter also has a wheel on it for adjusting the "depth" of the image (this actually adjusts the separation of the left and right images). This is fairly convenient and can hook into multiple devices and be adjusted for the comfort of the user fairly quickly.
But that's not really the special sauce part. The real meat of the solution is in their driver, not the hardware. Aside from the fact that you need a 120Hz display that is.
As we mentioned, either an application needs to be developed for stereoscopic rendering, or it needs some external "help" from software. In 3rd party cases, this is a wrapper, but in NVIDIA's case they built it right in to the driver. The advantage NVIDIA has is that they can go really low level if they need to. Of course, this is also their downfall to some degree, but I'll get to that later.
When rendering 3D games, a virtual "camera" is floated around the world at what is considered the viewers eye position. This camera has a "look at" point that tells us where the it's pointed. At the most brute force level (which really isn't done), we could take the camera for a particular game state and render two frames instead of one. With the first, we could move the camera a little left and the look at point a little right. For the next frame we could move the camera a little right and the look at position a little left. The point where the line of sight of the cameras cross is actually at screen depth. The game thinks it's just rendered one frame, but it's actually happened twice. The problem here is that we've got to rely on a high consistent frame rate for the game which just isn't going to happen with modern titles. But it helps illustrate the effect of what is going on: these two different camera views have to get to the screen some how.
Since the scene shouldn't change between rendering for each eye, we have the advantage that the geometry is consistent. All we need to do is render everything from two different positions. This means things can be sped up a good bit. NVIDIA tries to do as little as possible more than once. But they are also very uninterested in sharing exactly how they handle rendering two images. Once the rendered images have been placed in the frame buffer, the left and right eye images bounce back and forth in alternating frames. This makes it so that slow frame rate from the game doesn't affect the stereoscopic effect. There is no flickering and none of the instant headache feeling that older solutions were prone to.
One of the down sides with whatever optimizations NVIDIA is doing is that some effects that don't have readily accessible depth information are not rendered correctly. This means many post processing effects like motion blur, corona and bloom effects, some advanced shadowing implementations and certain lighting shaders, and some smoke fire water and other effects. Rendering the full scene twice could help alleviate some of these issues, but others just can't be fixed without a little extra help. And this is where NVIDIA comes through.
One of the biggest problems is knowing what settings to run at in a game so that the stereoscopic effects look as correct as possible. Because of NVIDIA's extensive game profiling for SLI, they are able to add additional profile information for stereo effects. A little information window pops up to tell you exactly what settings you need to worry about when you run a game. This window is enabled by default until you turn it off for a particular game. NVIDIA has also rated a bunch of games in terms of the experience with stereo effects which can help let people know what to expect from a particular game.
Beyond this, another common problems is rendering crosshairs or other sighting aides as a 2D sprite at the center of the screen rather than at the depth of the thing behind it. Many games render the crosshairs at object depth, but many also render it to screen depth. Luckily, many games give you a way to disable the in-game crosshairs and NVIDIA has provided their own set of stereoscopic crosshairs that render correctly. This is very helpful, as a 2D object at screen depth in the middle of the screen looks the same as if you were looking about 3 feet ahead of you while holding your finger up about 3 inches in front of your nose.
Leveraging their extensive work with developers, NVIDIA is also hoping to get new games to better support stereoscopic effects. While some of the anomalies are a result of NVIDIA's method rather than the developer, encouraging and assisting developers in implementing their desired effects in a stereo friendly way will help pave the way for the future. They can even get developers to include information that allows them to render some effects out of the screen. And this isn't cheesy theatre out of screen: this is in your face feels like you can touch it out of screen. Currently World of Warcraft Wrath of the Litch King has some out of screen effects that pretty sweet, but that really just leaves us wanting more.