> From: Peter M. Wolanin [mailto:pwola...@princeton.edu]

> One other thing with pymol and 3D stereo:  on our system, at least, it
> seems as though the on-screen rendering is much faster and smoother in
> stero mode than in regular mode.  Pymol in its usual mode 
> seem much slower
> than spdbv.  Is there something that needs to be set in order 
> to use the
> hardware rendering?

This is a defect in all of the nVidia based solutions I've tested, and one of 
the reasons I don't recommend nVidia cards for stereographics.  ATI FireGL or 
Radeon (+XiG) cards work fine as do various cards from 3DLabs.  Since this is 
clearly an nVidia chipset/driver specific issue, it is troubling that nVidia 
doesn't offer an appropriate email address or forum where we could report these 
kinds of low-level problems.

The same behavior is seen with their chipsets under Windows or Linux as well 
and with a few other GLUT-based stereo-capable programs (such as O, I believe). 
 If you have enabled the card's stereo capability, then when you create a 
stereo OpenGL context, you only get good performance when the program is 
actually rendering in stereo mode.  None of the other stereo graphics cards in 
this market seem to suffer this limitation.

The workaround for nVidia cards is to run PyMOL in stereo mode at all times but 
to zero out the stereo parameters when you are not actually wearing 3D glasses. 
 You end up drawing two identical images and everything looks peachy.

Here is some Python code which you can run on startup in order to get better 
mono performace with stereo-enabled nVidia cards.  The F1 key then becomes the 
stereo toggle.

Save in a ".py" file, such as $HOME/.pymolrc.py

# nvidia.py : NVidia stereo/mono performance workaround
# (put in your .pymolrc.py file or run this .py program manually)

from pymol import cmd

def nvidia_stereo():
   cmd.stereo("on") # always on
   if float(cmd.get_setting_tuple("stereo_angle")[1][0])!=0.0:
      cmd.set("stereo_angle",0)
      cmd.set("stereo_shift",0)
      print "nVidia stereo off"
   else:
      cmd.set("stereo_angle",2.1)
      cmd.set("stereo_shift",2)
      print "nVidia stereo on"
            
cmd.set_key("F1",nvidia_stereo)

nvidia_stereo() 

# end of code

Hope this helps,

Warren

cc: PyMOL Mailing List
    i...@nvidia.com


Reply via email to