(Working) Stereoscopic gaming with shutter glasses in Linux
Posted: Sun Feb 22, 2009 11:54 am
I now have S-3D working in most normal (not quad-buffer supporting) games in linux with shutter glases and a normal (not quad-buffer supporting) GFX card
Ha! Bet you thought you would never see that!
Although i am using an NVIDIA card, this technique should work with any graphics card with OpenGL support and any DDC glasses. It should also be possible to create a parallel port to glasses dongle to work with this solution for those who want to use native DVI display solutions (think DLP projectors)
My setup:
3Ghz Pentium D
NVIDIA 7900GTX
E-dimensional Pass-thru Dongle + Elsa Revelator wired glasses
Ubuntu 8.04
NVIDIA Proprietary binary drivers
19" Dell M993 supporting 100hz refresh at 1024x768
Acco NOBO X20p DLP projector (bulb currently blown )
Software needed:
softgenlock-1.0.tar.gz from http://netjuggler.sourceforge.net/SoftG ... wnload.php" onclick="window.open(this.href);return false;
VRizer 0.5 - http://90.146.8.18/en/futurelab/project ... ctID=12290" onclick="window.open(this.href);return false; (download link dead, see attachment)
wine (should come with your distro)
E-D Activator (Windows version from E-D's website, should be named E-D.exe)
How to Setup SoftGenLock:
1) untar softgenlock:
tar xvf softgenlock-1.0.tar.gz
2) change into the softgenlock directory
3) edit the softgenlock Makefile, uncommenting the following lines:
USE_FLIP=_
USE_GLASSES=_
4) open sgen_param.h and find the line with #define HSIZE (1024 * 4)
change to suit the display resolution and colour depth you intend to run in stereo (width * (colour depth / 8)
5) in a console window, in the softgenlock directory type:
make user
6) Ignore everything the documentation says about compiling a kernel module - this only works on 2.4 series (very old) kernels
7) Ignore what the documentation says about it supporting DCC to activate the shutters - i could not get this to work either
8) If you are thinking of making the parallel cable described in the documentation, beware that the pinout described for a 3pin DIN plug in the docs is wrong.
9) Set your X display panning to twice the with of your display resolution e.g i use 2048x768 for a 1024x768@100hz display. NVidia users can do this with the nvidia-settings tool.
10) still in the softgenlock directory type sudo ./softgenlock (hit enter, need to have root access)
11) Your display should flicker then you should see both halves of the virtual desktop overlaid. Hit ctrl-C to end.
Setting up VRizer
1) Untar vrizer.
2) Edit the supplied vrizer.conf to suit your display resolution (supplied config presetup for 1024x768), config help in README.
NB the vrizer.conf is have supplied is setup for use with this technique, the one from ARS technica comes setup for anaglph.
3) Copy vrizer.conf to ~/.vrizerrc
4) Don't ask me for the source, i dont have it. The license allows redistribution of the binary though.
Getting it all to work
1) Disable compiz if it is running. Pick an app, say glxgears. If it is a normally fullscreen app, start it and set it to run in windowed mode then exit.
2) Open 2 terminal windows.
3) In the first terminal window, change to the directory where you saved E-D.exe from E-Dimensional and type:
wine ./E-D.exe &
4) The E-D activator widget should then appear on your GNOME panel. Click on it and select Page Flip. Click on it again and select Stereo - On/Resync. This only needs to be done once until the computer is switched off.
5) Back in the first terminal window, type:
export LD_PRELOAD=/wherever/you/untarred/vrizer/vrizer.so
replacing /whereever/you/untarred/vrizer with the path to the file vrizer.so
6) Launch your chosen app from the command line e.g.
glxgears
7) Confirm that your app draws two side by side views by panning the desktop left/right
8) In the second terminal window, change to the directory where you untarred softgenlock and type:
sudo ./softgenlock
9) To return sanity to your desktop, click on the terminal window running softgenlock, and hit ctrl-C
Please note that the system has no way of knowing which frame will be in sync with which eye. If you are having trouble seeing the 3D effect, try putting your glasses on upside down. If this fixes things, then either keep restarting softgenlock until it gets the sync the right way or edit ~/.vrizerrc and where it reads:
setup_eye 0 right
setup_eye 1 left
Change it to:
setup_eye 1 right
setup_eye 0 left
then restart the opengl app (from the LD_PRELOADed terminal window)
Ha! Bet you thought you would never see that!
Although i am using an NVIDIA card, this technique should work with any graphics card with OpenGL support and any DDC glasses. It should also be possible to create a parallel port to glasses dongle to work with this solution for those who want to use native DVI display solutions (think DLP projectors)
My setup:
3Ghz Pentium D
NVIDIA 7900GTX
E-dimensional Pass-thru Dongle + Elsa Revelator wired glasses
Ubuntu 8.04
NVIDIA Proprietary binary drivers
19" Dell M993 supporting 100hz refresh at 1024x768
Acco NOBO X20p DLP projector (bulb currently blown )
Software needed:
softgenlock-1.0.tar.gz from http://netjuggler.sourceforge.net/SoftG ... wnload.php" onclick="window.open(this.href);return false;
VRizer 0.5 - http://90.146.8.18/en/futurelab/project ... ctID=12290" onclick="window.open(this.href);return false; (download link dead, see attachment)
wine (should come with your distro)
E-D Activator (Windows version from E-D's website, should be named E-D.exe)
How to Setup SoftGenLock:
1) untar softgenlock:
tar xvf softgenlock-1.0.tar.gz
2) change into the softgenlock directory
3) edit the softgenlock Makefile, uncommenting the following lines:
USE_FLIP=_
USE_GLASSES=_
4) open sgen_param.h and find the line with #define HSIZE (1024 * 4)
change to suit the display resolution and colour depth you intend to run in stereo (width * (colour depth / 8)
5) in a console window, in the softgenlock directory type:
make user
6) Ignore everything the documentation says about compiling a kernel module - this only works on 2.4 series (very old) kernels
7) Ignore what the documentation says about it supporting DCC to activate the shutters - i could not get this to work either
8) If you are thinking of making the parallel cable described in the documentation, beware that the pinout described for a 3pin DIN plug in the docs is wrong.
9) Set your X display panning to twice the with of your display resolution e.g i use 2048x768 for a 1024x768@100hz display. NVidia users can do this with the nvidia-settings tool.
10) still in the softgenlock directory type sudo ./softgenlock (hit enter, need to have root access)
11) Your display should flicker then you should see both halves of the virtual desktop overlaid. Hit ctrl-C to end.
Setting up VRizer
1) Untar vrizer.
2) Edit the supplied vrizer.conf to suit your display resolution (supplied config presetup for 1024x768), config help in README.
NB the vrizer.conf is have supplied is setup for use with this technique, the one from ARS technica comes setup for anaglph.
3) Copy vrizer.conf to ~/.vrizerrc
4) Don't ask me for the source, i dont have it. The license allows redistribution of the binary though.
Getting it all to work
1) Disable compiz if it is running. Pick an app, say glxgears. If it is a normally fullscreen app, start it and set it to run in windowed mode then exit.
2) Open 2 terminal windows.
3) In the first terminal window, change to the directory where you saved E-D.exe from E-Dimensional and type:
wine ./E-D.exe &
4) The E-D activator widget should then appear on your GNOME panel. Click on it and select Page Flip. Click on it again and select Stereo - On/Resync. This only needs to be done once until the computer is switched off.
5) Back in the first terminal window, type:
export LD_PRELOAD=/wherever/you/untarred/vrizer/vrizer.so
replacing /whereever/you/untarred/vrizer with the path to the file vrizer.so
6) Launch your chosen app from the command line e.g.
glxgears
7) Confirm that your app draws two side by side views by panning the desktop left/right
8) In the second terminal window, change to the directory where you untarred softgenlock and type:
sudo ./softgenlock
9) To return sanity to your desktop, click on the terminal window running softgenlock, and hit ctrl-C
Please note that the system has no way of knowing which frame will be in sync with which eye. If you are having trouble seeing the 3D effect, try putting your glasses on upside down. If this fixes things, then either keep restarting softgenlock until it gets the sync the right way or edit ~/.vrizerrc and where it reads:
setup_eye 0 right
setup_eye 1 left
Change it to:
setup_eye 1 right
setup_eye 0 left
then restart the opengl app (from the LD_PRELOADed terminal window)