Game developers simply unable to f* up their life doing all these tests to achieve any similar effect. With these crazy optimizations basic triangles based ao looks ideal even for sampling ranges near to screen size. Fixed in enbseries (for deferred only versions possible) by long time testing/inventing noise distribution functions and tricky filters, increasing sampling quality of course, applying pre-filtering and antialiasing.
Very few games (Metro Last Light if i remember) compute ao from per pixel normals, which is have very high quality of details (every texture brick have ao), but works badly by noise amount generated (require much more samples) and classic noise filtering code greatly degrade details. Unfixed in ENBSeries, because videocards not able to compute this, too much performance required for valid per ray steps occlusions without misses, may be in dx11 i'll be able to precompute this.ĥ) Almost all games (and nvidia driver) use ao for geometry from depth buffer data, which produce triangulation artifacts or solutions against this simply bypass ao for low anges. Hbao do have this computation for ao only, but at cost of very low range, basically it looks like lines with self occlusion enabled. Fixed in enbseries, ssil exist from first version of the mod, lighting math applied correctly by both reflecting color of objects and multiplying result with albedo instead of fake math for scene overlay.Ĥ) ao and il do not use self intersection and self shadowing for tracing rays because of performance reasons. Again, almost no games have this (ssdo was published later), because they ignore it in general, they can't apply it properly by lighting math instead of image overlay, because it's at least twice slower than just ao. Fixed in enbseries by huge amount of time wasted for inventing noise in space functions and it's filter parameters, while default 0.3 range is several times bigger than in all games i have seen, even about twice bigger than ao in gta5 (most games use very thin ao).ģ) ao itself is not enough for fake GI, ssil helps here. Fixed in enbseries only by the way it's applied, to affect ambient color (which is simplest form of sky light) instead of entire screen and color of models affect amount of lighting, so black color do not reflect light, but have a lot of darkening from ao, while white objects reflect lot of light, but ao amount is tiny.Ģ) sampling range is very small because of performance reasons, very much noise of algorithms by the nature of sampling, screen space limitations.
Why ao in other games sucks (in 99% of them), even if someone written about algorithm that it kinda physically based or at least looks like that:ġ) ao is computed and applied like white objects are placed in synthetic room with white ground and white sky as hemisphere light emitter, black-white model. I do agree Boris's AO is really good, maybe he can share some source with us devs on the forum They raytrace AO, then compare it with their AO solution until it looks close enough.
HBAO itself is also not physically-based, it doesn't take into account nearly enough information to even be close.įrom NVIDIA's website: "HBAO uses a physically-based algorithm that approximates an integral with depth buffer sampling." They use the world physically-based very very loosely.
HBAO+ is just a well rounded solution to rendering HBAO quickly. AO is an approximation of 1 part of global illumination. (Which could be said for a lot of the things you work on, haha.)īefore Boris rants about the term "physically based", I can tell you the answer is no. It'd be nice to see more developers embrace something similar.
Though I must say, your own custom-rolled AO is top-of-the-line, and fantastic. isn't HBAO+ (not conventional HBAO) physically-based? I thought I remember reading that somewhere, but it's been awhile.