PDA

View Full Version : New nVidia feature - "Ambient Occlusion"


Satertek
04-04-2009, 12:14 AM
GeForce Release 185 - Ambient Occlusion (http://www.nzone.com/object/nzone_ambientocclusion_home.html)

Looks pretty nifty. The Half-Life 2 shot looks particularly nice.

The beta driver (http://www.nvidia.com/Download/Find.aspx?lang=en-us) is out now, but unfortunately, for the time being it looks restricted to GeForce 9 and up, hopefully that'll change.

Spectre-7
04-04-2009, 01:14 AM
Hey, very nice to see AO implemented in hardware! In the Half-Life 2 shot, it looks a little aggressive for my taste, but nice none-the-less.

I'm curious how they're accomplishing it from the technical standpoint, as I haven't seen AO calculated in real-time before. Old-school ray-traced AO is noisy and slow, and even the approximate, non-raytraced AO I've used adds a few seconds to a rendering. In either case, it's significantly faster to bake an AO pass to a texture instead. With any luck, this technology can be generalized and used for rough and dirty AO calculations in regular, non-real-time renderers!

tombofsoldier
04-04-2009, 01:37 AM
I'm curious how they're accomplishing it from the technical standpoint

Someone else on COG that understands almost anything about rendering :eek:

Explanation: Screen Space Ambient Occlusion samples the depth buffer (how far away each rendered pixel is from the camera) from games. It takes a sample pixel, calculates how close it is to a random number of neighboring pixels, and then darkens it based on that amount. The theory behind ambient occlusion being that the closer things are to each other the less light is getting bounced in there from wherever light is coming from.

There are any number of things to make it run faster, like using a half the resolution of whatever the screen is being rendered at and ect. There are also a number of artifacts such as banding and the effect disappearing entirely at certain times. Also it can only be used for very close things.

It's obviously not perfect by any means, but hey it looks better than nothing. You can see it in Crysis, Starcraft 2, and several others games.

Spectre-7
04-04-2009, 02:25 AM
Someone else on COG that understands almost anything about rendering :eek:

Yep, I am a graphics whore, although I have to admit that I'm far more experienced from a user-perspective than from the theoretical or mathematical ends.

Explanation: Screen Space Ambient Occlusion samples the depth buffer (how far away each rendered pixel is from the camera) from games. It takes a sample pixel, calculates how close it is to a random number of neighboring pixels, and then darkens it based on that amount. The theory behind ambient occlusion being that the closer things are to each other the less light is getting bounced in there from wherever light is coming from.

Now, I'll warn you that I'm already rather familiar with what ambient occlusion simulates from a physical stand-point. I would also fully understand depth buffer or Z-buffer without further explanation, and I suspect that your random distribution is actually Gaussian, but that's just a guess. ;)

Sincerest apologies for all snarkiness.

There are any number of things to make it run faster, like using a half the resolution of whatever the screen is being rendered at and ect. There are also a number of artifacts such as banding and the effect disappearing entirely at certain times. Also it can only be used for very close things.

I would think that banding should be easy enough to deal with, either by dithering if you don't mind a noisy result, or a quick post-process blur. Considering the number of stream processors found on modern GPUs, I wouldn't imagine either would be all that taxing.

As for being limited to close things... well, that's odd. A byproduct of storing the z-buffer at a low bit-depth?

Still, AO is more useful (IMO) in revealing fine details on near objects than on distant objects, which are probably low LOD anyway, and leaning heavily on pre-computed textures. Not much point in doing otherwise considering their reduced pixel real-estate and slow parallax.

In fact... on second thought, I don't see much benefit in implementing AO in real-time at all unless your assets are animated, and I'm a bit surprised that it's not one of the standard calculations when compiling a Source map. Weird. Hrm.

Anyway, nice to see this added as a standard driver feature. I read a white-paper (http://www.mpi-inf.mpg.de/~ritschel/Papers/SSDO.pdf) a few months back talking about applying the same screen-space techniques to more generalized global illumination, and I'd be positively delighted to see Nvidia working towards something similar.

That's a big fat dur moment for me. I completely forgot that I had read about pretty much this exact technique. *sigh*

Cheers!

tombofsoldier
04-04-2009, 02:37 AM
No problem, the close thing has to deal with objects that aren't in view and losing coherency over a distance, it's just the screen remember? I was explaining mr. z-buffer and such for anyone else who read it, and as for GI... some people have tried it but the whole "it can't take into account what you can't see" thing really screws up with global illumination. In other words the most you'd get out of it is a cheap, neat looking trick and not actual, quality GI.

Spectre-7
04-04-2009, 02:52 AM
as for GI... some people have tried it but the whole "it can't take into account what you can't see" thing really screws up with global illumination. In other words the most you'd get out of it is a cheap, neat looking trick and not actual, quality GI.

I get what yer sayin', but as far as games are concerned, I'm always willing to settle for cheap, neat looking tricks. I mean, that's been the thrust of real-time rendering since at least raycasting in Wolf3D, and appears to be the impetus behind nearly every pixel-shader I've ever seen.

Considering the incredible expense of GI technologies, something is better than nothing. Ya know... unless you've figured out some way to implement an unbiased rendering engine in real-time.

muddi900
04-04-2009, 03:57 AM
Yep, I am a graphics whore, although I have to admit that I'm far more experienced from a user-perspective than from the theoretical or mathematical ends.



Now, I'll warn you that I'm already rather familiar with what ambient occlusion simulates from a physical stand-point. I would also fully understand depth buffer or Z-buffer without further explanation, and I suspect that your random distribution is actually Gaussian, but that's just a guess. ;)

Sincerest apologies for all snarkiness.


I would think that banding should be easy enough to deal with, either by dithering if you don't mind a noisy result, or a quick post-process blur. Considering the number of stream processors found on modern GPUs, I wouldn't imagine either would be all that taxing.

As for being limited to close things... well, that's odd. A byproduct of storing the z-buffer at a low bit-depth?

Still, AO is more useful (IMO) in revealing fine details on near objects than on distant objects, which are probably low LOD anyway, and leaning heavily on pre-computed textures. Not much point in doing otherwise considering their reduced pixel real-estate and slow parallax.

In fact... on second thought, I don't see much benefit in implementing AO in real-time at all unless your assets are animated, and I'm a bit surprised that it's not one of the standard calculations when compiling a Source map. Weird. Hrm.

Anyway, nice to see this added as a standard driver feature. I read a white-paper (http://www.mpi-inf.mpg.de/~ritschel/Papers/SSDO.pdf) a few months back talking about applying the same screen-space techniques to more generalized global illumination, and I'd be positively delighted to see Nvidia working towards something similar.

That's a big fat dur moment for me. I completely forgot that I had read about pretty much this exact technique. *sigh*

Cheers!

I play vidja game:confused:

tooshorttooshort

Smoof
04-04-2009, 10:34 AM
Looks nice, I'll give them a try. But, I don't really see myself noticing this, it seems far too subtle to really make any difference to me.

Stmfuller
04-04-2009, 04:10 PM
you mean they haven't come up with an automatic blowjob machine yet on those cards?
What!!!!??!?!?

Naw, it looks pretty awesome.

Grifter
04-08-2009, 10:37 AM
It seems the drivers have either been pulled or the link on nVidia's site is broken.

Disgustipated
04-08-2009, 10:41 AM
Not new... this has been out since January/February. It's also a performance hog.

Satertek
04-09-2009, 05:47 PM
It seems the drivers have either been pulled or the link on nVidia's site is broken.

Still there, but for some reason Geforce 8 line cards still aren't supported. Also, if you're using Windows 7, install the Vista driver, it'll work.

Grifter
04-10-2009, 10:13 AM
Still there, but for some reason Geforce 8 line cards still aren't supported. Also, if you're using Windows 7, install the Vista driver, it'll work.

The download link on nVIDIA's site just wasn't working yesterday it had nothing to do with the drivers themselves.