[Wine] Re: feature idea for wine : stereo 3D

rofthorax wineforum-user at winehq.org
Thu Jan 29 23:07:50 CST 2009

Andrew Fenn wrote:
> On Fri, Jan 30, 2009 at 11:00 AM, rofthorax <wineforum-user at winehq.org> wrote:
> > Wine could bring this to anyone regardless of income level, with as little as red/green, cyan,red, blue/yellow,cross-eyed/parallel layering, or as advanced as the use of lenticular monitors, polarized projection or lcd shutter frame synchronization.
> > 
> > 
> If I am correct what you're looking for is Nvidia's Stereoscopic
> drivers which are available here (
> http://www.nvidia.com/object/3d_stereo.html ).
> Since you're wanting to use this on Linux you shouldn't need anything
> apart from the nvidia driver you already have installed on your
> system. Here is a guide on how to turn it on (
> http://forums.nvidia.com/index.php?showtopic=40768 )

If I'm right that only support NVidia cards from the 7 series, we are on 9 and those drivers are no longer updated..

Anyhow that's NVidia.. I'm talking beyond drivers, beyond hardware.. 
I'm talking about allowing anyone regardless of graphics hardware the ability to access stereo presentation.. This should happen in the libraries that provide 3D services (directx and opengl) not the hardware driver implementation, because it is not tied to the hardware implementation.. You won't get this with DirectX 9 because Microsoft is using DirectX10 to leverage consumers onto Vista regardless of the needs of the consumers, which doesn't justify the purchase of a new OS. 

Anyone having had a OpenGL programming course as I, know this.. It's just a matter of rendering two images where there is one, offsetting the camera in the computation by a small delta.. DirectX is a bit more than a offshoot of opengl but it must use the same matrix multiplication math that opengl uses with the same or similar 3D pipeline. 

I'm saying this should not be left to the hardware manufacturers to implement but should be a feature of the 3D library that interfaces with the hardware, because getting hardware developers to agree on standards such as for stereovision is like herding cats, they each want a way to leverage the technology in their favor.. The reality of  3D vision is it's implementable at a higher level than the 3D library, it only requires the manipulation of the code before it gets passed on to the 3D hardware.. 

Shutter glasses: synchronize left and right eyes with odd and even frames, odds for left, even for right, using a normal double buffering scheme.
1. show left view, left lcd frame clear, right lcd frame opaque
2. show right view, right lcd frame clear, left lcd frame opaque
3. show left view, left lcd frame clear, right lcd frame opaque

Note this is easier because all you have to do is alternate the placement of the camera, you don't need to render two views at once.. Remember we are double buffering here.. 

For anaglyph: 
Render both left and right frames (this slows down the graphics card because you have to do both at once in the hidden buffer), multiply each by a frame of color and average the two images together into the hidden buffer.. You could reduce the frame rate and hold the double buffers for two frames per frame. 

For lenticular display (note, lenticular displays have the ability to present more than one stereo view), this involves moving the camera multiple times, one per interlaced lenticular view. I think there are some lenticular displays that can present 5 views, so all you need to do is render 5 views, creating one image five times as wide as before, displayed on the monitor appears of a holographic quality (requires much faster card).
How lenticular displayes work, if you've ever used a glass thermometer you understand the concept,  a surface filled with thousands of small ridged lenses running vertically down the display. Each lens presents one of 5 slivers of imagery,  your left eye sees one line magnified, your right eye sees another line magnified, shifting your position shifts which lines behind the curved lens are magnified.  Also the resolution of the lenses determines if a 3D image can be presented, children will not be able to perceive as many dimensions as adults due to the amount of eye separation, so not everyone will see the effect.. I could have that switched around. Turning a lenticular display on its side presents a animation effect because both eyes will see the same image, but tilting the display horizontally produces a sort of animation (as found in cheap plastic ridged lenticular stickers in cracker jack boxes). 

There is also another method of creating 3D imagery using the side to side motion that takes advantage of a concept that your brain processes imagery more slowly with less light, thats where the glasses had a darker lens on one eye and a clear lens on the other.. The effect alone can be used with any video image where video is constantly panning from say left to right if the right eye is darkened (right perspective is delayed, left eye sees left perspective, as image passes to right perspective, left eye is focused on next image to right, and right eye is starting to perceive the right perspective).. At least that is my explanation for the effect.. 

In every stereo vision effect, one eye has to see something different, that is how the effect is perceived.. There is also a 3D effect that someone came up with where prism refraction is used to present colors as being in front of other colors.. Then there are effects like Single Image Random Dot Stereograms (those noisy images that were popular in the 90s). 

I've thought about writing a book on this stuff, but I think it could be a rather thin book.. The technology is not at all hard to understand, what is harder to understand is why it's been left to hardware developers to implement, why it is not presented between the graphics driver and the 3D library.. Wine as a unique position which no OS has, it has the capability to have 3D vision implemented in the translation of instructions to the backend libraries (OpenGL) or in libraries that don't support 3D vision, like stereo support in DirectX 9 API implementation without the consent of Microsoft. Just imagine if pieces of wine code could be used to replace DirectX on the windows platform and add features to XP that exist in DirectX10.. Ever thought about that? This could be one of those.. But it needs to start on a platform that is uniformly accessible, and I doubt ATI and NVidia are going to agree on one.. This is a job for open source.. 

I've been told "if youare so smart, why don't you do it".. Because I need help, and that starts with making others aware of the idea and the need..

More information about the wine-users mailing list