3D Vision Blog

A normal user's look into the world of 3D Stereo Technologies

3D Vision Blog header image 2

Things That Hurt Stereoscopic 3D Gaming According to Nvidia

February 28th, 2010 · 5 Comments · Other S3D Tech


Digging through some programming documents on Nvidia’s website I was able to find something interesting in one quite old document, regarding programming for GeForce 7 series, but these are still mostly the same issues that bring problems to current games when you try to play them in stereo 3D. I’m citing the part where Nvidia talks about these common issues and suggests workarounds (in terms of programming the game) for them below, because you need to be aware of these in order to be able to avoid most of them by changing settings in the game options etc. If you know what hurts the game looking good in stereo 3D mode you may be able to disable some of the problematic things or lower their negative impact with lets say custom convergence, so that the game will still be playable and look nice. And although these are related to Nvidia’s stereoscopic 3D drivers (prior 3D Vision) they do apply to 3D Vision and other alternative solutions that allow you to play a game in stereo 3D mode…

Rendering at an Incorrect Depth
This problem is the number one thing you should take care of. The 3D Stereo Driver uses the depth to create the stereo effect, so anything that is not at the correct depth stands out like a sore thumb when viewed in Stereo.
– Place background images, sky boxes, and sky domes at the farthest possible depth. Otherwise, the world will look like it’s in a little box in stereo.
– Place HUD items at their proper 3D depth. If you have name labels that hover over objects, putting them at the 3D depth of the object gives a better stereo effect than putting them on the near plane of the view frustum.
– It’s also helpful to render the HUD as far into the scene as possible. This trick gives you a greater perceived depth in the rest of your scene while not causing eyestrain when looking at the HUD.
– Laser sights, crosshairs, and cursors do not look correct unless placed in the 3D world at the depth of the objects they are pointing to. When they aren’t, it is almost impossible to use them since the user’s eyes are converging on one depth, but the cursor is at another depth; users see two cursors, neither of which point at the correct place.
– Highlighting objects should happen at the depth of the object itself, not in screen space.

Billboard Effects
Billboard effects look flat and bad in regular 3D; they look even worse in stereo. In regular 3D you see the billboards as you move around, but in 3D Stereo the problem immediately pops out at you, even in a static scene. Most billboard effects look extremely flat in stereo, so use real geometry everywhere you can instead, even low resolution geometry looks better. For particle effect billboards (sparks, smoke, dust, etc), these may or may not look ok, the best thing you can do is test your app in stereo to see what it looks like and judge if the quality is good enough, and make sure that the billboards have a meaningful depth in 3D.

Post-Processing and Screen-Space Effects
2D screen-space effects can greatly hurt the stereo effect. Things like blurry glow, bloom filters, image-based motion blur fall into this category. These effects are usually created by rendering the 3D geometry to a texture, then rendering a 2D screen aligned quad to the screen. The geometry in the texture is no longer at the correct depth in the world as the effect should be, thus working poorly in 3D Stereo. You should provide the option to disable these effects for people playing in stereo and render the geometry to the back buffer.

Using 2D Rendering in Your 3D Scene
Any object rendered as 2D doesn’t really have a real 3D depth, so it is placed at the monitor depth. This will look very flat in 3D Stereo. If you are mixing 2D and 3D in your HUD you may have inconsistent depths leading to eye strain. Again, render everything at the proper depth, in 3D, and test with stereo on.

Sub-View Rendering
When rendering a sub view to the screen, such as a picture in picture display, car mirror, or small map in the upper corner, you must set the viewport to cover the area before rendering. This trick prevents strange stereo effects bleeding outside of the intended section of the screen.

Updating the Screen with Dirty Rectangles
If you are determining only the parts of the screen that have changed and not updating the rest of the screen this can cause odd looking rendering in 3D stereo. Just render all visible objects each frame.

Resolving Collisions with Too Much Separation
If you are resolving collisions by pushing objects away from each other, make sure you don’t push them away too far. It looks bad in normal 3D when moving around but stands out right away in stereo, making things appear to hover above the ground.

Changing Depth Range for Difference Objects in the Scene
Splitting the scene into multiple depth ranges can cause distortions in the stereo effect making some objects look shorter or elongated. All objects should be rendered in a consistent depth range for the best stereo effect.

Not Providing Depth Data with Vertices
When sending vertices for rendering to D3D for software transform and lighting, include the RHW depth information for stereo to function properly.

Rendering in Windowed Mode
NVIDIA’s 3D Stereo only works when your application is in full-screen exclusive mode. If you don’t support fullscreen mode, then game players can’t take advantage of 3D Stereo.

Shadows
Rendering stencil shadows using a fullscreen shadow color quad will not work properly in stereo. However, re-rendering shadowed objects in the scene at their proper depth in shadow color will function correctly in stereo. Shadow maps function fine, and projection shadows function as long as you are projecting to the proper depth for the shadow.

Manually Writing to Render Targets
Don’t lock render targets and do direct writes; doing so bypasses the stereo driver.

Very Dark or High-Contrast Scenes
Very dark scenes can become even darker when using 3D Stereo shutter glasses. Providing a brightness or gamma adjustment will help this problem. Using very bright objects on very bright and very dark objects causes ghosting, which hurts stereo. Testing your game in stereo quickly shows whether or not this is a problem.

Objects with Small Gaps between Vertices
Small gaps in meshes can become much more obvious when rendered in stereo. Make sure your meshes are tight and test in stereo to be sure this isn’t happening.

Download the complete GPU Programming Guide Version 2.5.0 in English (PDF)…


Other similar posts you might be interested in:

Tags: ········


5 responses so far ↓

  • 1 JFFulcrum // Mar 1, 2010 at 13:32

    Well, they just banned a whole bunch of current technologies: SSAO, Deferred shading/lighting, MRT`s, Shadow volumes, VBO`s… I`m afraid that dropping all of this techniques for stereo will result in too much performance loss, not to mention already “FPS/2″ stereo tax, and maybe picture quality drop too.

  • 2 Bloody // Mar 1, 2010 at 14:23

    Have in mind that this document dates back to 2005, but these things are still valid even nowadays. Nvidia does not say you should not use the above or any new advanced effects, just that they need to be done properly in order to look and work good in stereo 3D mode. The problem is that a lot of developers are still not thinking with S3D when developing a game and often resort to different techniques that bring good results while playing the game on a “flat” surface, but mess things up when you switch to S3D mode. And you can see examples for that in some recent games… although some developers are showing just the opposite – games with up to date graphics and effects working just fine in stereo 3D. Also have in mind that some effects are not needed anymore when you have the added perception of depth in S3D mode as they are used just to try to recreate that depth feeling on the “flat” screen surface when in normal mode.

  • 3 JFFulcrum // Mar 1, 2010 at 18:16

    >this document dates back to 2005, but these things are still valid even nowadays

    Xbox/PS3 hardware not changed since that times, so nearly all performance or quality improvements seen in games came from this “anti-S3D” methods (please, no remarks about russian/east-europe gamedev`s — “in Soviet Russia game plays YOU!”). If developers switch them off, it will be the sort of time travel, because geometry complexity, texture quality and so on stay still on the same level last five years. And no one will invest into overall, S3D-aware improvements. Until next generation of consoles arrival, even if S3D become a mainstream, there will be just on/off button for additional effects — to enjoy stereo correct ID Tech 4-picture in S3D mode. Considering unsolved eyestrain issues…

  • 4 craylon // Mar 1, 2010 at 20:10

    I’m actually taking NVIDIAS side here.
    IMHO too much stuff in modern 3d games aren’t really 3d but some “after effect tricks”, you might even say “fakes”. On the other hand before s3d became popular it seemed to me that NVIDIA and other manufacturers added to this effect by not setting their focus on increasing raw polycount (which would add “true” 3d details) but on adding effects that were mentioned above that don’t really help s3d.

    on the other hand I’m playing tons of games old and new in 3d-vision mode and I’d take good s3d over post effects any day. even 3-5 year old games look better to me in s3d then some modern stuff without stereo mode.

    the real wisdom for game developers tough from this document IMHO lies in small details like the HUD and 3D cursor. I don’t think they take away much performance or visual quality but can increase s3d playability a ton. All other stuff like shadows and such seem to be easily switched on and off in good configuration menus.

    One thing I’m missing from this document tough are advanced techniques to actually improve s3d quality once you left out all the don’ts. I’m thinking about calculating convergence and seperation for example based on terrain-depth and user screen size and so on…

  • 5 JFFulcrum // Sep 25, 2010 at 11:41

    NVIDIA published new guide for S3D gamedev practicies, much better & actual according to current graphics technologies state:

    http://developer.download.nvidia.com/whitepapers/2010/NVIDIA%203D%20Vision%20Automatic.pdf

Leave a Comment

Current ye@r *