PDA

View Full Version : 3D Vision and GL 3.x +



M/\dm/\n
01-21-2010, 08:30 PM
I'm working on GL 3.x based engine, and, with all the 3D stuff going around, I wanted to make sure it will be compatible.

From searching these forums and reading Nvidia developer papers I'm confused. Maybe I missed something.

The general problem with 3D Vision approach seems that the Nvidia driver is simply patching vertex shaders on fly, w coords and Projection matrices in them???.

But the GL 3.x doesn't have such thing as glVertex, because everything is transferred as generic vertex attributes. And matrices are also fully custom built without API functions which driver could wrap.

Does it mean we won't be able to use stereo with 3D Vision?

Should I even bother with square/nonsquare rendertargets and stuff like that for "free" 3D or do I need to prepare to so 3D the old fashioned way and hope for some API calls to sync buffer swaps with glasses?

Brolingstanz
01-23-2010, 06:51 AM
>> The general problem with 3D Vision approach seems that the Nvidia driver is simply patching vertex shaders on fly, w coords and Projection matrices in them???.

Haven't delved very deeply myself but I don't think that's going to get you there. I think you need to sheer the projection to the left and right such that the resulting frustra converge + coincide at the focal plane.

ZbuffeR
01-23-2010, 08:37 AM
Brolingstanz you are wrong, the problem with 3D vision is that IT CAN NOT BE CONTROLLED inside the application, contrary to quad-buffered stereo or good old anaglyph.

And yes it is a pain.

Brolingstanz
01-25-2010, 02:46 AM
In a thought experiment, I imagined a gerbil treadmill powering two electrodes attached to my left and right eyes, stimulating an alternating blink response at regular intervals over the course of several hours, all the while being subjected to a battery of visuals composed entirely of opponent colors ^1.

^1 Opponent colors are those that normally cant be seen together at once, specifically reddish green and yellowish blue.

Pierre Boudier
01-25-2010, 03:28 AM
if you want to support stereo rendering in your engine, then the most appropriate way in opengl is to use a quad buffer stereo pixel format. this will give you all the control you need, and will work as well for other vendors using a standard interface.

many applications are using QBS today, although usually very few games.

ZbuffeR
01-25-2010, 05:35 AM
Thank you Pierre but can you name which consumer cards actually provide a quad buffer stereo pixel format ?

Chris Lux
01-26-2010, 12:06 AM
Just to give my two cents:

I sincerely hope that a extremely popular OpenGL game comes out (Rage?) so that Nvidia is either forced to enable OpenGL for 3D Vision in a way it is useful for other games and applications or the much more preferred solution is for Nvidia _and_ ATi to open up the quad buffer API to GeForce and Radeon models.

If you think about it, there is a way to let the developers make the right decisions for correct stereoscopic rendering, but Nvidia does all these assumptions about render target sized and so on which almost never work correctly.

So i think with stereoscopic rendering more and more penetrating the consumer market the quad buffer API has to be opened!

peterfilm
01-26-2010, 05:19 AM
well not really, as very few games use OpenGL. If quad buffering's ever added to d3d, then we might see the quad buffered GL pixel formats available on geforces. Shortly followed by the end of the Quadro line of cards, I would imagine - as it's the only thing left they can do that the consumer cards can't (apart from the hacky gsync stuff, which has a very limited market).
I agree it's an awful waste. You need properly skewed frustums to do stereo properly - sheering is just wrong. I just don't see the point in buying a 3D Vision set up at the moment.

Dark Photon
01-26-2010, 07:33 AM
...quad buffered GL...Quadro line of cards...it's the only thing left they can do that the consumer cards can't (apart from the hacky gsync stuff, which has a very limited market).
I think there's also some 30bpp X screens and render target support (10/10/10/2), SDI outputs (http://en.wikipedia.org/wiki/Serial_digital_interface) (HDR GPU video outputs), and no doubt some other things I don't know about.

Pierre Boudier
01-26-2010, 08:04 AM
Thank you Pierre but can you name which consumer cards actually provide a quad buffer stereo pixel format ?

<not speaking for amd>
given the recent changes in the industry (many new monitors supporting stereo natively, hdmi 1.4), QBS might not be a workstation feature for long anymore. especially considering that it is indirectly available on d3d.
</not speaking for amd>

if a company wants to develop a QBS game, I would recomment that it contacts the corresponding IHV to ask for support.

ZbuffeR
01-26-2010, 09:04 AM
No really "in development", but for reference, there is at least 1 game I verified having Quad Buffer Stereo support :
Doom 3

And I am pretty sure Quake 3 arena too, but that brings us far in the past.

peterfilm
01-26-2010, 10:49 AM
Doom 3 was the last Id game to use OpenGL.
That was a long time ago.

I really think it was a mistake for nvidia to release 3D Vision without exposing quad buffers to the programmer. Now yet another generation of gamers has had their fingers burnt by a crap 3D implementation. They'll struggle to sell a new solution in the near future.

Brolingstanz
01-26-2010, 10:57 AM
I have to admit that chunking up my firends in 3.5D would be very satisfying...

Still, I dont need QBS to give biker and associates a taste of my railgun o unholy whoopass - that never gets old.

Chris Lux
01-26-2010, 01:46 PM
Doom3 with the latest patches seems not to support quad buffer stereo, even quake3s implementation seems wrong and does not give a good depth impression.

I hope one IHV will step up and release consumer quad buffer enabled drivers, this will enable correct off axis projections for perfect stereoscopic rendering. Think about the possibilities using consumer head tracking like TrackIR in combination with stereo... exciting ;)

ZbuffeR
01-26-2010, 03:13 PM
quake3 : try upping the cg_stereoSeparation to 4.0 instead of the default 0.4 I had great results in the past, getting plasma/lightning in the face was really freaky.
The hud was not great in 3D however, better to switch it off:
seta r_stereo "1"
seta cg_stereoSeparation "4.0"
seta r_drawstatus "0"
seta cg_drawAmmoWarning "0"
seta cg_drawAttacker "0"
seta cg_drawFPS "0"
seta cg_drawcrosshairnames "0"
seta cg_drawkiller "0"
And do not forget to lower the fov, like around 70.

Or use ioquake3, with more control about the stereo projections, it supports both QBS and anaglyph support for us poor consumers :
http://wiki.ioquake3.org/Stereo_Rendering


About head tracking, yes it would be a great addition, but what I saw about trackir-like setups was more like new controller rather than actual frustum positionning.

M/\dm/\n
01-27-2010, 12:04 AM
I really think it was a mistake for nvidia to release 3D Vision without exposing quad buffers to the programmer. Now yet another generation of gamers has had their fingers burnt by a crap 3D implementation. They'll struggle to sell a new solution in the near future.

While I think that not releasing all the necessary tools for development was very bad move, making 3D work in a hacked way in pretty much all DirectX games is actually better than what PhysX did, real hardware, no games.

And $400 for 3D vision setup (including 22" screen) is not that bad actually.

But given the fact that a lot of OpenGL applications use custom matrix stuff and parameter passing, that's kinda no go for us it seems.

So for now, all I can do is to accommodate to quad buffer approach and hope for the best? [do Nvidia/Ati people still attend these forums]

I understand I need a Quadro to do the testing?

Chris Lux
01-27-2010, 01:33 AM
While I think that not releasing all the necessary tools for development was very bad move, making 3D work in a hacked way in pretty much all DirectX games is actually better than what PhysX did, real hardware, no games.
I agree, you can count the games on a single hand that work without problems. Most of them have serious issues like shadows in screen space or post processing effects based on a single eye etc.



And $400 for 3D vision setup (including 22" screen) is not that bad actually.

But given the fact that a lot of OpenGL applications use custom matrix stuff and parameter passing, that's kinda no go for us it seems.

So for now, all I can do is to accommodate to quad buffer approach and hope for the best? [do Nvidia/Ati people still attend these forums]

I understand I need a Quadro to do the testing?
Yes you need a Quadro, I got to do some testing here at work using a FX5800 on my 22" 3D Vision enabled display. It works great. But me being from Europe i had to solder up a 3D sync cable to connect the emitter to the Quadro because Nvidia decided that the european market does not need the cable and they could save some money on it while selling the 3D Vision set for the same figure price in Euro as they take Dollars :p.

Aside the criticism: i really think modern renderers can not be hacked to do correct off-axis projection stereo from the outside. The developer needs the tools to make the righ t decisions (what to render when to where). There is so much literature out there about how to do it right that they (ATi, Nvidia, Intel etc.) even do not need to produce something themselves besides enable quad buffer stereo to consumer level products.

This definitely is one thing OpenGL currently has over D3D, they have an API.

Maybe we should take this to the future OpenGL proposal threads, to make something like this required core, but we all know how this will end ;).

Alfonse Reinheart
01-27-2010, 02:38 AM
Maybe we should take this to the future OpenGL proposal threads, to make something like this required core

To make what "required core"? That quad-buffer stereo is available on all implementations of a particular version? Even if no goggles or whatever are actually installed?

No thank you. I'd much rather use the existing interface to ask if quad-buffer stereo is available (that is, the presence of QBS pixel formats indicates goggles), and use it where possible (and where the user decides).

Nicolas Lelong
01-27-2010, 01:17 PM
Yes you need a Quadro, I got to do some testing here at work using a FX5800 on my 22" 3D Vision enabled display. It works great. But me being from Europe i had to solder up a 3D sync cable to connect the emitter to the Quadro...

I confirm that you need a Quadro, we bought one FX3700 _only_ for testing the 3D Vision support with OpenGL, quite expensive test...

Anyway, the good news is that the 3D sync cable is not mandatory, our setup is working fine without it, just leaving the IR emitter connected in USB.

The bad news is that the 3D Vision drivers for Quadro are pretty lame and not so robust. We had a hell of a time trying to have a proper stable setup on Win7 x64 without success, while we had no problem on XP32...

Add my vote for proper support for QBS on consumer level cards, the DirectX hack is not a way to go to create anything of value in stereoscopic rendering/visualization.

Cheers

Chris Lux
01-27-2010, 04:03 PM
Maybe we should take this to the future OpenGL proposal threads, to make something like this required core

To make what "required core"? That quad-buffer stereo is available on all implementations of a particular version? Even if no goggles or whatever are actually installed?

No thank you. I'd much rather use the existing interface to ask if quad-buffer stereo is available (that is, the presence of QBS pixel formats indicates goggles), and use it where possible (and where the user decides).
I do not see your problem. How is this any different than anti aliasing or anisotropic filtering? If the hardware supports it and the user chooses to enable it in the video settings of his game/application it is usable if he chooses not to use it, fine. That's how it is working today with Quadros and QBS and that's exactly what I am asking for in consumer level drivers.

Chris Lux
01-27-2010, 04:12 PM
The bad news is that the 3D Vision drivers for Quadro are pretty lame and not so robust. We had a hell of a time trying to have a proper stable setup on Win7 x64 without success, while we had no problem on XP32...

Add my vote for proper support for QBS on consumer level cards, the DirectX hack is not a way to go to create anything of value in stereoscopic rendering/visualization.
There are some hickups n currents drivers, but nothing I think of as too serious. The only bigger problem I had was a requiered reboot under Windows 7 when switching off the game 3D Vision mode to get the QBS mode working. Aside from this everything worked very well even for windowed QBS applications (aero glass swiched off automatically for this).

Yes, Quadro and 3D Vision work without the sync cable, but using it we experienced more precise syncing without the occational 'flashes'. The cable is actually required when using something like 3D ready DLP tvs.

Alfonse Reinheart
01-27-2010, 04:33 PM
That's how it is working today with Quadros and QBS and that's exactly what I am asking for in consumer level drivers.

And that's my point exactly. There is nothing to make "required core." You can already ask for QBS. This is simply a matter of NVIDIA not providing QBS when they should.

It's up to NVIDIA, not the ARB.

peterfilm
01-27-2010, 04:48 PM
I don't think it'll happen because of the Quadro line. Likewise for AMD because of their FireGL line.
It's a tragedy in many respects, because stereo is having its moment in the sun, and it will be dismissed as a fad by consumers if this hack rubbish continues. Off-axis projection is necessary for comfortable and realistic stereo, and imperative for head tracking. Some of us know what it's like to be immersed in a tracked stereo setup, and it really is in another league to the demos of the 3D Vision hacks I've seen.
Tracking is also getting its moment in the sun (nintendo/sony/microsoft all got tracking solutions), so I suppose it's only a matter of time before the need for off-axis projection becomes obvious. Maybe then QBS will appear in d3d, and subsequently consumer OpenGL drivers.
It's all very sad, anyway.

Alfonse Reinheart
01-27-2010, 05:55 PM
I don't think it'll happen because of the Quadro line. Likewise for AMD because of their FireGL line.

I don't know about that. NVIDIA makes those glasses. And getting better stereo from those glasses is of importance in selling them.

All they have to do is make sure to only allow QBS when the glasses are plugged in on consumer hardware.

me262
02-07-2010, 03:54 PM
I do agree that both AMD/ATI and NVIDIA do now need to open up their quad-buffered API to the consumer level. Major companies like Panasonic and even Sony are putting some serious backbone into 3D technology.

I've done some research and the least expensive card I can find with QBS support is a Quadro 580, being a poor college student I'll have to wait for a while before I can aquire this and play with my 3D monitor (iZ3D).

A side note, has anyone experimented with the iZ3D? My dev stations run Linux so I can't really tell how the iZ3D drivers work with games like WoW, Unreal Tournament, and others that they claim to run in 3D.

Brolingstanz
02-07-2010, 05:14 PM
yes, after being completely blown away by Avatar I now can see what all the excitement is about.

Im going down to best buy to grab one of those fusion camera systems right now...

Chris Lux
02-08-2010, 12:32 AM
when i asked a contact at nvidia if there were any plans to open the QBS API i got the 'will never happen' answer and i should look at cheaper Quadro cards. i could do so, but these cards would not be able to handle my applications in a monoscopic setup :p.

through my work at a VR group i exactly know how to do stereoscopic rendering right and my applications are ready, but most people working with them are not able to use these capabilities because a Quadro card with appropriate performance characteristics costs a fortune. extrapolating this to consumer software tells me, if no-one does the first step, this will eventually kill the PC as an entertainment platform for good and nvidia tries to push 3D Vision as a PC feature right now, so...

Stephen A
02-08-2010, 12:51 AM
QBS on consumer cards... This would seriously breath life back to OpenGL.

On the other hand, it would eat into the sales of Quadro/FireGL and neither company would like that to happen. Still, the first company to do that would have a serious competitive advantage, so you never know.

Alfonse Reinheart
02-08-2010, 12:52 AM
It'll happen when DX12 requires QBS support. Then NVIDIA will act like it was always available under OpenGL.

Chris Lux
02-08-2010, 01:19 AM
thats what i am afraid of, till DX12 the 3D Vision approach (hack-stereo) will have a bad reputation for all the little to big things not working right. as i said every game i tried has serious issues (even if it is only a 2D crosshair). by that time the consoles may have the right APIs to get 3D working correctly and the PC is behind again.

regarding Stephans statement, having QBS available now (lets say by the GDC in march ;)) could have a great impact on OpenGL. i can only imagine how great this would be to some game (like Rage) on the PC.

Ilian Dinev
02-08-2010, 01:44 AM
yes, after being completely blown away by Avatar I now can see what all the excitement is about.
Try Crysis ;) (though, my VR920 adds to the immersion via head-tracking)

Alfonse Reinheart
02-08-2010, 02:09 AM
by that time the consoles may have the right APIs to get 3D working correctly and the PC is behind again.

Consoles are used on TVs, which don't usually have the refresh rate to do 3D imaging. Furthermore, what does it matter? If you're banking on 3D imaging to somehow make PC gaming dominate console gaming, you should give it up now. It simply isn't going to happen. And even if it could, OpenGL games certainly aren't going to lead the charge.

Chris Lux
02-08-2010, 02:15 AM
Furthermore, what does it matter? If you're banking on 3D imaging to somehow make PC gaming dominate console gaming, you should give it up now. It simply isn't going to happen. And even if it could, OpenGL games certainly aren't going to lead the charge.
so we give up.

then why bother with a better OpenGL API? not just for games or entertainment OpenGL is behind and what should lead the change to give OpenGL an egde over other APIs? so we give up...

games and entertainment are the biggest forces to drive stereo-3D, so clearly an QBS enabled AAA-game could help us to get a better suited API for other things.

me262
02-08-2010, 10:16 AM
There are some QBS games already, but none as of recent. Quake 3 (via ioquake3) and Doom 3.
Again, the iZ3D monitor ships with its own implementation via a driver, however I'm not sure how this kicks in for the applications that don't have QBS, or what the driver does behind the scenes with the camera. Although I think it has its own SDK.
Guess I should probably install Windows on here and take a look at it all.

Consoles are also used on the HDTVs, for those with a very decent setup, although how would they get that to work? Is one HDMI port capable of sending two images across the line simultaneously? Do the consoles have enough power to handle double the render load?

Alfonse Reinheart
02-08-2010, 12:22 PM
then why bother with a better OpenGL API?

So your metric for the success of the OpenGL API is that PC gaming beats console gaming in some fashion?

Sorry; I don't see it as a competition. PC gaming is not opposed to console gaming. They both coexist so long as a player doesn't marry himself to one platform or the other. If you're a gamer, you should be interested in gaming wherever you may find it.


not just for games or entertainment OpenGL is behind and what should lead the change to give OpenGL an egde over other APIs?

Nothing. In any useful sense, the API war is over, and has been over for some time.

Game development takes a long time. A game developer that is using D3D is not going to build a new backend renderer just to access QBS. If they're going to switch, they'd wait until their current game is released. By then, D3D would provide QBS.

Any advantage which OpenGL provides can be nullified in a single D3D revision. And D3D revisions tend to come quickly enough that game developers will not need to switch to OpenGL to gain access to the feature.

Stephen A
02-08-2010, 01:42 PM
A sidenote: HDTVs are starting to include support for 120Hz refresh rate (real 120Hz, not fake interpolation techniques) and Bluray just finalized a standard for 3d playback. This is an emerging market and opening up QBS in OpenGL would provide some measure of competitive advantage until the next release of D3D.

M/\dm/\n
02-09-2010, 01:47 PM
Shame, I don't think I'm going to invest into hx0red 3D if it's all that there is.

After seeing movies in 3D I was under impression 3D might pick up finally, but hacks is not what I'm ready to pay money for.

And with custom shaders in 3.x there is no way someone will be able to patch the engine on fly :(

me262
02-09-2010, 04:01 PM
It's not really with shaders from what I'm experienced with, it's more about the camera. You have to derive two positions and turn them slightly to a Zero Disparity Plane. Then write the lighting and visible geometry to a buffer (considered BACK_LEFT), and repeat the process for the BACK_RIGHT buffer with the other camera position.
If someone actually has done this in shaders though, I'd certainly be interested in looking underneath that engine hood.

Stephen A
02-09-2010, 07:33 PM
If someone actually has done this in shaders though, I'd certainly be interested in looking underneath that engine hood.

It's not very difficult, actually. I did that for my diploma thesis and even parallax mapping worked correctly.

ZbuffeR
02-10-2010, 06:08 AM
with custom shaders in 3.x there is no way someone will be able to patch the engine on fly :(
I think Madman meant that the current Nvision hack-the-program-to-make-stereo-work is flawed for anything going away from fixed path, and this is true as shadows and other special effects all appear completely wrong with Nvision.

On the contrary, adapting the code of a program to work well with QBS is fairly simple compared to that.

Stephen A
02-10-2010, 06:51 AM
Ah, that makes sense. I can imagine this solution breaking down hard on HUDs, postprocessing effects and the like. From various articles on the effect, it seems that Nvidia simply reverse-engineers the games' shaders and plugs its own world matrices, wherever possible. Ugly hack that can never be robust.

What they could (and should) do, is provide a way to enable QBS. Realistically, this is possible even without modifying the D3D itself (e.g. link with nvision.dll, call nvEnableQBS() before creating the D3D device and nvSelectQBSBuffer(NV_BACK_LEFT/NV_BACK_RIGHT) to route rendering commands). Of course, this would eat into their Quadro sales, so it's a no go. I could also imagine Microsoft wanting to have some say on the matter.

me262
02-10-2010, 11:52 AM
It's not very difficult, actually. I did that for my diploma thesis and even parallax mapping worked correctly. Nice! So are there two shaders for the same effect, one for regular, and one for stereo? That is one of my main concerns.
Sadly, my OpenGL class went to shader-based the month after mine, so I don't have much experience with them. I'll be auditing the class after I'm done with school, if not sooner.

ZbuffeR
02-10-2010, 01:49 PM
Only one shader needed. Just tweak the projection slightly to the left then to the right.

Alfonse Reinheart
02-10-2010, 01:56 PM
Just tweak the projection slightly to the left then to the right.

And how do you know what the projection is? Or even if the shader is intended to render something to the viewport (rather than say, a render target for an in-game monitor)?

That's the problem with denying explicit application QBS control; the shader hack can't really know when to do the hack and when not to.

ZbuffeR
02-10-2010, 02:09 PM
Okay, wait, for those not understanding here : since a few posts, there are 2 different discussions running in parallel.

One : it is EASY to port the SOURCE CODE of an application to take advantage of quad-buffered-stereo or even anaglyph rendering.

Two : it is FUNDAMENTALLY FLAWED to expect Nvision (or any other system) being able to guess magically how to turn a mono application to stereo rendering without serious artefacts or loss of effects.

Alfonse Reinheart
02-10-2010, 02:30 PM
Agreed, on both points.

peterfilm
02-10-2010, 03:00 PM
To get correct stereo, you need to create an off-axis projection matrix, and offset the view matrix to compensate for the shift in the projection matrix. That can be done in a vertex shader, I suppose.
You need to know a few things about the world you're viewing too, as well as the viewer - like how far from the monitor (or projector screen) the viewers eye is (and indeed its position if you're doing tracked stereo)...where to put the near plane, because the near plane can be any point behind or in front of the screen. You also need to know the real world size of the screen (monitor/projector screen).
That's an awful lot of stuff to try and imply in the driver.
I'd recommend you get yourselves a quadro (the 5 year old ones can be picked up second hand for next to nothing), get some shutter glasses and emitter (bit more expensive), and get a wii-remote. Download the wii bluetooth software, put some reflective pads on the shutter glasses, put the wii-mote on top of the emitter, and hook it all in to your renderer.
Then you'll see something you never thought possible for so little money. Incredible stuff.

me262
02-11-2010, 02:22 AM
So then , how is that shader run through? You switch to projection mode, then run it? How do you account for the two positions?

Well how to make a 3D image I know how in code, it's the shader part I'm interested in. If we're talking about calculating for stereo, Binocularity.org (http://www.binocularity.org) is actually a source in my research, along with a webpage on Calculating Stereo Pairs (http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/stereographics/stereorender/index.html). Example code too. Adjust eye separation in the in-game settings, and I think the basics are set.
As far as game development though, I'd rather not get something so old. I need a little oomph, which is why I'm looking at the Quadro 580 (I'm a student, so I need to go a little cheap). I already have a Geforce 9400 PCI connected, which is OGL 3.1 and CUDA capable, so I have a good deal of the heavy lifting taken care of for general development.
It'd be interesting as well to program head movement, but right now I'm developing on a iZ3D 3D monitor (passive polarizaion, RealD 3D type glasses, no shutter here!), so I'll worry about head tracking later.
Wow... that post kinda sounded like an advertisement...

Stephen A
02-11-2010, 04:21 AM
@me262: you render twice, once from the viewpoing of each eye (with slightly tweaked projection matrices). The first rendering goes to the left backbuffer, the second to the right backbuffer and that's it. You don't need to modify your shaders, you just need to run them twice!

As ZBuffeR said, this is really easy (trivial even) if you have access to the source code: just run the rendering step twice with the correct projection/modelview matrices. However, this is impossible to implement automatically through the driver in the general case (which is what nvision is trying to do).

Chris Lux
02-12-2010, 01:28 AM
If someone actually has done this in shaders though, I'd certainly be interested in looking underneath that engine hood.

It's not very difficult, actually. I did that for my diploma thesis and even parallax mapping worked correctly.
yes, it actually is very simple. the projection matrix has to be based on an off-axis projection (asymmetric frustum) and the viewing matrix has to be transposed by the eye offset. that is basically it, and it is something that can IMO not be done on the fly because the hack most definitely will assume wrong things from the projection and viewing matrix (if it is able to identify them, and then they might be passed as composites to the shader, which would mean game over!).

sad story _again_ nvidia! i was on this train before 10 years ago and now history seems to repeat itself with nicer gadgets (wireless glasses and lcd screens)...

Chris Lux
02-12-2010, 01:34 AM
It's not very difficult, actually. I did that for my diploma thesis and even parallax mapping worked correctly. Nice! So are there two shaders for the same effect, one for regular, and one for stereo? That is one of my main concerns.
Sadly, my OpenGL class went to shader-based the month after mine, so I don't have much experience with them. I'll be auditing the class after I'm done with school, if not sooner.
as ZbuffeR stated, the shader will not know about the viewing setup, it just gets different projection and viewing matrices as uniforms. and there is the problem with the nvision way, you may deliver the composite matrices for model_view and model_view_projection and the 3d-hack-driver has no way of adding the correct offsets and correct projections...

there is a nother problem, it might only patch the viewing matrix which will end up giving you false stereo parallax without the correct off-axis projection.

peterfilm
02-12-2010, 06:00 AM
exactly. The scale of the scene cannot be implied either. NVidia is most definitely not the way stereo is 'meant to be played'.

knackered
02-12-2010, 06:05 AM
I'm encouraged to see this being discussed. I was beginning to think nobody in realtime graphics cared about stereo projection. I've tried to set up discussions on the subject over the years, with little interest. But now we've got consumer 120hz displays, things should change. We should set up a petition to get nvidia and ati to expose quad buffered stereo pixel formats.

me262
02-12-2010, 12:51 PM
Now that RealD 3D and Avatar have really pushed the boundaries, I expect Stereo Projection will be gaining more popularity. I don't mind them not exposing it, I just want to see QBS on the consumer cards now, even my Mobile Quadro 1600M doesn't have QBS!
I'm all for the petition! Sign me up!

knackered
02-12-2010, 04:49 PM
I'm lost. What do you mean you don't mind them not exposing it, but you want to see QBS on the consumer cards?
That's almost the definition of a contradictory statement.

Stephen A
02-13-2010, 02:02 AM
Yeah, that's a little weird. Personally, I'm very very irked at Nvidia not exposing QBS on my Quadro NVS-based laptop. That's just low.

ZbuffeR
02-13-2010, 10:17 AM
So even the "buy Nvidia Quadro to have Quad Buffered Stereo " argumment does not hold.

It would be a good idea for ATI to expose QBS everywhere...

Chris Lux
02-14-2010, 05:25 AM
we should not forget that the "buy Nvidia Quadro to have Quad Buffered Stereo" argument also means for us to get a 3000$+ very high end quadro card for comparable performance characteristics as our current 400$ consumer pendents. i mean who would want a Quadro FX 1800 (400$, mid range) for stereoscopic rendering which is basically equal to an GeForce 8800GS (100$, low end)? It is a joke, i do not want to just look at still images or images rendered with OpenGL 1.5 level quality at real-time... and i am sure potential customers also do not want to!

Alfonse Reinheart
02-18-2010, 01:16 PM
It would be a good idea for ATI to expose QBS everywhere...

I can't believe I'm even saying this, or that this is happening. But ATI is going to do Quad Buffer Stereo (http://www.anandtech.com/video/showdoc.aspx?i=3743&amp;p=6) on their Radeon parts. ATI is now more on the ball with OpenGL than NVIDIA.

It is the sixth sign of the Apocalypse.

Come on NVIDIA, you're the ones with the actual 3D vision hardware. Get it done, already!

Chris Lux
02-19-2010, 02:36 AM
really good news, but no mention of OpenGL in the article. i hope this is not just a proprietary D3D extension.

ZbuffeR
02-19-2010, 03:31 AM
Very nice move from ATI/AMD !

Slightly hinted by Pierre here :
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&amp;Number=271053#Post2710 53

;-)

Chris Lux, there is no mention on Direct3D either on the article.

dukey
02-19-2010, 05:51 AM
Having worked in the 3d industry for a while.. all I can feel is pessimism about this. Historically quad buffer has only been of any use on nvidia cards. ATI firegl cards would only shutter, or only do passive mode, I forget which. And this setup would essentially only work in XP.

Now that Vista/7 have come along the driver has lost the ability to manipulate the final image in the same way the driver could do all sorts of funky stuff in XP, due to the Aero architecture. The result is that quad buffer won't work in Windowed mode as the driver can't draw different views on each monitor. With quadro cards, the driver will shutter full screen, apps/games but thats about it.

Chuck in the fact, the main API used for games, Direct X9/10 has no API to address the stereo issue. I believe direct x 7 used to have a stereo API, but direct x 7 is long gone.

Until microsoft release a new version of direct x with stereo support, i can't ever see this taking off in any big way.

Even quad buffer though has it's limitations. Autostereoscopic displays can show up to 9 views. Obviously quad buffer can only cope with 2 views.

ZbuffeR
02-19-2010, 06:22 AM
Autostereo is somewhat like anaglyph, as it can be composited by the application.
Contrary to shutter, which really need hardware support for proper sync.

me262
02-19-2010, 10:02 AM
This would figure, I just picked up a QuadroFX 1800 from ebay yesterday.

Alfonse Reinheart
02-19-2010, 11:46 AM
The result is that quad buffer won't work in Windowed mode as the driver can't draw different views on each monitor.

Um, why would you expect it to work? You're rendering to a window. Where else could it possibly go?

Brolingstanz
02-19-2010, 07:43 PM
If this 3D stuff takes off we're going to need an IMAX screen for the living room. My only real peeve about Avatar is clipping of the nearfield objects as they meander out of frame - a little bit weird but to be expected. Otherwise I fould myself shooing away those tiny biofluorescent willowy things.

me262
02-19-2010, 10:55 PM
I'm hoping it does, now that there's a mostly-clean way of seeing 3D on a 2D plane.

I'll have to take a look at that again, I must have missed it while enjoying the movie. Where did you see that at?

Chris Lux
02-20-2010, 05:56 AM
HNow that Vista/7 have come along the driver has lost the ability to manipulate the final image in the same way the driver could do all sorts of funky stuff in XP, due to the Aero architecture. The result is that quad buffer won't work in Windowed mode as the driver can't draw different views on each monitor. With quadro cards, the driver will shutter full screen, apps/games but thats about it.

the last time i tested QBS on a Quadro FX, Windows Aero was shut down when initializing a QBS context for a windowed application. after closing the application Aero came back up.

dukey
02-20-2010, 06:43 AM
The result is that quad buffer won't work in Windowed mode as the driver can't draw different views on each monitor.

Um, why would you expect it to work? You're rendering to a window. Where else could it possibly go?

In XP when you set up quad buffers and you are in windowed mode. If you set the desktop to clone mode, it doesn't strictly clone, since the left view gets the left image and the right the right. This is a good setup for dual projectors. Without quad buffers, this setup is virtually impossible to achieve for windowed apps. Now that Aero has come along, this can't be done any more.

Stephen A
02-20-2010, 07:36 AM
That stills leaves you with the possibility to (a) go fullscreen in clone mode (works fine) or (b) turn off Aero for a while (ugly, but should also work).

However, I can't see this being a common use-case. I mean *why* would you want to run QBS in windowed mode? Stereo is tiring enough as it is, mixing stereo with non-stereo is an order of magnitude worse.

dukey
02-20-2010, 09:59 AM
Turning off Aero doesn't fix it. The issue is the driver architecture, and windowed quad buffer is for you know .. CAD programs etc.

Chris Lux
02-25-2010, 04:40 AM
It would be a good idea for ATI to expose QBS everywhere...

I can't believe I'm even saying this, or that this is happening. But ATI is going to do Quad Buffer Stereo (http://www.anandtech.com/video/showdoc.aspx?i=3743&amp;p=6) on their Radeon parts. ATI is now more on the ball with OpenGL than NVIDIA.
i got a visualinfo.txt output from ATi 10.3 beta drivers on a Radeon 5700 class card, and there was no QBS pixelformat available. :(

Alfonse Reinheart
02-25-2010, 11:42 AM
i got a visualinfo.txt output from ATi 10.3 beta drivers on a Radeon 5700 class card, and there was no QBS pixelformat available.

Why would there be? Do you have a 120Hz display and the other hardware necessary to use it? If not, there's no reason for the implementation to offer something you can't use.

Chris Lux
02-25-2010, 03:14 PM
it is not there. you can create QBS pixelformats on 60Hz displays. I know because I have both kinds of displays and did it with a nvidia card. it is possble ATi is handling this differently. maybe some ATi insider has specifc info... I do not have the radeon card personally.

Chris Lux
02-26-2010, 03:43 AM
http://3dvision-blog.com/atis-stereoscopic-3d-plans-will-start-with-catalyst-10-3/

if this is true, then no QBS with ATi Radeon either.

Pierre Boudier
02-26-2010, 06:31 AM
afaik, this anouncement was indeed for the d3d driver.

the current status about QBS:
- only enabled for workstation boards with the stereo connector

me262
02-26-2010, 10:13 PM
Turning off Aero doesn't fix it. The issue is the driver architecture, and windowed quad buffer is for you know .. CAD programs etc. I can confirm that on linux, I installed my Quadro 1800 today, and after fighting around with linux, got glxgears -stereo to display something, turns out I had to disable X compositing, so for now I've lost my desktop cube, wobbly windows, and all the other neat effects.

peterfilm
02-28-2010, 04:45 PM
it's a pity the compositing engine isn't stereo aware itself. Desktop cube would be quite interesting in stereo, as would windows with different depths depending on how recently used they are. If only there was more pioneering spirit out there, like the old days. I mean, wobbly windows for goodness sake...what a lame idea, bereft of inspiration and taste. All this hardware at our disposal and that's as far as they can go.