tingles wrote:So what is your process for AO ? I assume your baking out an AO map for each object and overlaying it over the color map?
Hey cheers! You do 3D art, who do you work for??
The AO is a dynamic : instead of using baked-in-maps, i use post-process effect, people call it SSAO or screen-space ambient occlusion. What I'm actually doing is an extension to SSAO called screen-space directional occlusion.
With SSAO you render the scene's depth+normals to a texture. Then for every pixel, a shader calculates how many points around that pixel are visible - just checking really if the pixel on the surface is in a concave area or not, ie. a valley not a hill. If it's in a concave area, then you get less ambient lighting - thus the AO term. This doesn't look as good as baked-in maps because obviously you can't use as high quality algorithms in real-time. The benefit though is it's all dynamic, so works on animating objects, objects moving past one another, and objects sitting on other surfaces.
The SSDO extension, goes along the same lines, but since you're already testing all these points around each pixel to see if the pixel can 'see the environment', it then uses the direction between the surface, the tested visible point and the environment, and accumulates colour from that direction in the environment. Basically you get a better looking ambient term, it will have coloured shadows for example, instead of being just a greyscale AO term used to modulate the ambient lighting. Can't really see it my screenshots coz i haven't done the work to polish it up yet.
Reason it's so cool using dynamic techniques is in my game you'll be flying from space, through planetary atmospheres at all times-of-day etc. So the background environment will constantly be changing colour and it's really nice to be able to shine these changing backgrounds properly onto the models.
It really is crazy what you can do in realtime these days, this is just the tip of the iceberg... The next step in the algorithm is then doing a single bounce of the ambient light to get coloured interreflections between surfaces. You can see this is beginning to approach full global illumination in realtime.. You then use this kind of technique in your lighting / shadow maps too, and thus you have real time GI for both ambient and diffuse lighting... all fully dynamic, realtime running in a game. Nuts!