Fast Gather-based Construction of Stereoscopic Images Using Reprojection

Screenshot preview

Check the screenshots below!

Research Project

As part of a research project in our Game & Media Technology master, Bas Zalmstra and I developed a very fast technique to generate a stereoscopic image pair from a 2D image with depth information.

The technique uses reprojection to transform the 2D image into a stereoscopic image pair. Our implementation is very fast on current graphics hardware and generates high quality stereoscopic images. Our benchmark shows an execution time of less than 1 ms on mid-range hardware.

Our results are very similar to the results Crytek has claimed with their ScreenSpace Reprojection Stereo technique (SSRS). However, the approach of their algorithm seems to be different.

Research paper

The technique is thoroughly explained in our research paper. The paper also includes benchmarks and a quality analysis. It can be downloaded here:

Fast Gather-based Construction of Stereoscopic Images Using Reprojection
Revision 1

If you have any questions, remarks or suggestions regarding the paper, please leave a comment or contact me. I’d like to get in touch and share ideas. Also, I would be very happy to hear if the paper has been useful to you!

Shader implementation

The shader is written in Cg. It can be used for any purpose under the relaxed conditions mentioned in the shader file.

Reprojection Shader
Revision 2

Demo

We made a demo which is a perfect tool to test the technique. It enables real-time switching between the reprojection technique and the rendering twice approach. Furthermore, a lot of variables can be adjusted in real-time and some debug views are available. The Sponza Atrium model by Crytek is used. I would be happy to hear any comments!

Stereoscopic 3D Reprojection Demo
Revision 1

System requirements: Windows (32 or 64 bit), OpenGL 3.1 support, Microsoft Visual C++ 2010 redistributable.

Screenshots

All screenshots are created with the fast reprojection technique.

| 11 people like this post.

2 Responses to Fast Gather-based Construction of Stereoscopic Images Using Reprojection

  1. Very minor optimisation:

    The step in the vertex shader:


    rayDirection /= rayDirection.w;

    can be omitted, as it has no effect on the final vout.rayDirection

    • Thanks!

      You’re right, the result is only used in the line

      vout.rayDirection = rayDirection.x / rayDirection.z;

      which cancels out the perspective division.

      The shader file is updated with the change.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">