Introduction
The aim of the project is to investigate different methods for calculating and rendering dynamic ambient occlusion. Ambient occlusion is used to generate soft shadows that appear in crevices and corners where the light cannot reach as well as shadows that occur when two objects are in close proximity. These shadows aren't cast by any particular light source but are a product of global illumination. During my preliminary search for reseach material I came across a number of different implementations and variations which I intend to look into in order to determine the solution which provides the best balance of graphical quality and performance. Since the application will be real time, cost effectiveness is a big issue - the ambient occlusion will be working in conjuction with lighting, shadows, dynamic objects and user interaction, so it's impact on the framerate cannot be too high. I would like to look at expanding the most viable ambient occlusion methods so that they provide a better approximation of global illumination/ indirect lighting. Again, the focus must be on keeping costs down but at the same time providing an adequete amount of realism.
Motivation
Simulating realism in computer games is a big issue in the games industry today. As games get more and more realistic, the consumers' graphical expctations are getting higher and higher. When it comes to graphical realism, lighting and shadows are one of the most important factors. But it's not enough to just render shadows cast by light sources - there is ambient lighting to consider as well. Global illumination techniques such as ray tracing and radiosity simulate the effects of light bouncing off surfaces and add more depth and realism to a scene. However, this is very computationally expensive and isn't really suitable for real time applications such as games. Ambient occlusion is far more cost effective and simpler. The results produced by ambient occlusion alone are not enough to simulate GI but it could be expanded to better emulate its results while still keeping costs down.
I've been interested in lighting effects and shaders since third year (a lot of my projects focused on the lighting aspects) and ambient occlusion seemed like an interesting topic to investigate. It's also pretty current. According to an article on ambient occlusion in Games Programming Gems 8 (published this year) indirect lighting/global illumination is still an active area of research so I felt it would be a good topic to look at in that respect as well.
Research Question
What are the solutions to rendering dynamic ambient occlusion in realtime 3D applications (i.e. games) and how can they be improved/expanded upon to better approximate global illumination?
Addressing the Question
In addressing the question, I plan to first research static ambient occlusion, in order to better understand the technique, and hopefully implement a simple demo using static AO in a very simple scene. This will help my understanding of the topic in a practical sense as I find learning by doing is a useful tool. I will also research global illumination techniques and how they calculate indirect lighting. From there I will look into the various methods that are available for implementing dynamic AO and try to implement those that seem the most viable performance wise in a real time app. Once I have these methods working in a game like environment I will identify any graphical or performance issues that they may have and experiment to try and solve them.
In expanding the solutions to better emulate global illumination, there are a number of articles I have found which discuss using AO to render indirect lighting. I will try and implement the solutions they discuss and maybe even expand them through experimentation and research into similar techniques.
(I was also wondering whether I should try and implement a proper global illumination method as a comparision but I'm not sure.)
Resource Requirements
I don't anticipate needing any equipment or software that is not already available to me in the game lab. I will be using Visual Studio 2005 or 2008, and working with the DirectX SDK - probably using DirectX 9.
References and Bibliography
Pharr, M and Green, S. 2004. Chapter 17: Ambient Occlusion. Fernando, R. GPU Gems: Programming Techniques, Tips and Tricks for Real Time Graphics. Addison Wesley. 2004. pp 272-292.
Bunnell, M. 2005. Chapter 14: Dynamic Ambient Occlusion and Indirect Lighting. Fernando, R. GPU Gems 2: Programming Techniques for High Performance Graphics and General Purpose Computation. Addison Wesley. 2005. pp 223-233.
Landis, Hayden. 2002. "Production-Ready Global Illumination." Course 16 notes, SIGGRAPH 2002. [online] Available online at http://spherevfx.com/downloads/ProductionReadyGI.pdf [Accessed 19/10/10]
Filion, D. 2010. Chapter 1.2: Principles and Practice of Screen Space Ambient Occlusion. Lake, A. Games Programming Gems 8. Course Technology PTR. 2010. pp 12-31. [online]. Available online at http://my.safaribooksonline.com/9781584507024. [Accessed 18/10/10]
No comments:
Post a Comment